欢迎来到天天文库
浏览记录
ID:3671177
大小:367.37 KB
页数:10页
时间:2017-11-22
《基于字符的聊天程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、南华大学计算机科学与技术学院实验报告(2010~2011学年度第2学期)课程名称分布式系统题目基于字符的聊天程序一、实验目的利用Socket套接字实现主机之间的数据通信,并设计一个网上聊天程序,基于UDP的通信,采用套接字方式和多线程方式完成两台计算机的互联并用编码实现连接,完成题目要求的功能,对等聊天工具实现的是局域网中的聊天功能,其为一个对等的应用,既是服务器又是客户端,对等聊天工具既可以自动发现在线的伙伴,又可以和在线的伙伴进行点对点的聊天二、实验环境操作系统:Windows7开发环境:MicrosoftVisualstudioC++6.0三、实验内容1.服务器端:导入
2、winsock的头文件;创建套接字;将套接字绑定到一个本地地址和端口上;将套接字设为监听模式准备接受客户端请求;等待客户端请求;用返回的套接字和客户端进行通信;通信完毕,清空套接字。2.客户端程序:导入winsock的头文件;创建套接字;向服务器端发送连接请求;和服务器进行通信;关闭套接字。3.服务端主要代码说明:a.初始化WS232interr;err=WSAStartup(ver,&wsaData);b.版本错误则清除导入的DLLif(LOBYTE(wsaData.wVersion)!=2
3、
4、HIBYTE(wsaData.wVersion)!=2){WSACleanup(
5、);return;}c.开始bind网卡ret=bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr));ret=listen(listenfd,10);d.开辟一定的缓冲区,便于接收或发送字符charrecvbuf[1024]={0};recv(sock,recvbuf,1024,0);cout<6、]"<>sendbuf;send7、(sock,sendbuf,strlen(sendbuf),0);recv(sock,recvbuf,1024,0);cout<8、9、HIBYT10、E(wsaData.wVersion)!=2){WSACleanup();return;}SOCKETlistenfd=socket(AF_INET,SOCK_STREAM,0);if(listenfd==INVALID_SOCKET){cout<<"socketfailedwitherrcode="<11、htons(5555);servaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=1;intret=setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(constchar*)&opt,sizeof(opt));if(ret==SOCKET_ERROR){cout<<"setsockoptfailedwitherrcode="<
6、]"<>sendbuf;send
7、(sock,sendbuf,strlen(sendbuf),0);recv(sock,recvbuf,1024,0);cout<8、9、HIBYT10、E(wsaData.wVersion)!=2){WSACleanup();return;}SOCKETlistenfd=socket(AF_INET,SOCK_STREAM,0);if(listenfd==INVALID_SOCKET){cout<<"socketfailedwitherrcode="<11、htons(5555);servaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=1;intret=setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(constchar*)&opt,sizeof(opt));if(ret==SOCKET_ERROR){cout<<"setsockoptfailedwitherrcode="<
8、
9、HIBYT
10、E(wsaData.wVersion)!=2){WSACleanup();return;}SOCKETlistenfd=socket(AF_INET,SOCK_STREAM,0);if(listenfd==INVALID_SOCKET){cout<<"socketfailedwitherrcode="<11、htons(5555);servaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=1;intret=setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(constchar*)&opt,sizeof(opt));if(ret==SOCKET_ERROR){cout<<"setsockoptfailedwitherrcode="<
11、htons(5555);servaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=1;intret=setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(constchar*)&opt,sizeof(opt));if(ret==SOCKET_ERROR){cout<<"setsockoptfailedwitherrcode="<
此文档下载收益归作者所有