基于TCP的字符聊天VC++程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

服务器端:#includeWinsock2.h#includestdio.hvoidmain(){WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){WSACleanup();return;}//上面代码为与操作系统协调要使用的winsocket版本SOCKETapaserver=socket(AF_INET,SOCK_STREAM,0);//创建了一个服务器端的套接字sockaddr_inapaaddr;apaaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//inet_addr(192.168.0.10);apaaddr.sin_family=AF_INET;apaaddr.sin_port=htons(6000);//apaaddr.sin_zero=bind(apaserver,(sockaddr*)&apaaddr,sizeof(sockaddr));//将套接字与IP地址和端口绑定listen(apaserver,5);//设置套接字为监听模式sockaddr_inapaclient;intn=sizeof(sockaddr);charm[100];charj[100];charbuff[200];SOCKETapaconnect=accept(apaserver,(sockaddr*)&apaclient,&n);//建立“连接套接字”while(1){chartone[100];intt;t=recv(apaconnect,j,100,0);//从客户端接收到的字符存入b缓冲区**************if(t==SOCKET_ERROR){printf(对方结束了本次通话\n);break;}printf(客户端发来信息:\n);printf(%s\n,j);//在屏幕上显示了客户端所说的话printf(服务器请讲话:);gets(tone);///////服务器端的发送功能send(apaconnect,tone,strlen(tone)+1,0);///////////printf(服务器端完成一次运行\n);}closesocket(apaconnect);WSACleanup();}客户端:#includeWinsock2.h#includestdio.h#includestring.hvoidmain(){//////////////////////////////////////////////WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){WSACleanup();return;}SOCKETuser=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_INQQ;QQ.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);QQ.sin_family=AF_INET;QQ.sin_port=htons(6000);connect(user,(SOCKADDR*)&QQ,sizeof(SOCKADDR));charc[100];charstr[100];charb[100];while(1){intt;printf(请输入你要说的话:);gets(str);send(user,str,strlen(str)+1,0);t=recv(user,b,100,0);//从客户端接收到的字符存入b缓冲区**************///////////客户端的接收功能if(t==SOCKET_ERROR)////////////////{printf(对方结束了本次通话\n);break;}printf(服务端发来信息:);printf(%s\n,b);//***************printf(客户端完成一次运行\n);}///////////////////closesocket(user);WSACleanup();}存在缺陷:本程序由于是单线程的,从理论上就存在缺陷,只能每人各一句话,如需改进,需使用多线程思想。作者信息:悉尼大学工程学院张志刚(StoneCold)VC6.0运行实际效果图:

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功