Socket编程利用TCP协议的实验报告.doc

Socket编程利用TCP协议的实验报告.doc

ID:51116313

大小:124.00 KB

页数:9页

时间:2020-03-18

Socket编程利用TCP协议的实验报告.doc_第1页
Socket编程利用TCP协议的实验报告.doc_第2页
Socket编程利用TCP协议的实验报告.doc_第3页
Socket编程利用TCP协议的实验报告.doc_第4页
Socket编程利用TCP协议的实验报告.doc_第5页
资源描述:

《Socket编程利用TCP协议的实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Socket编程报告(TCP/IP协议)一.实验目的通过C++来实现TCP/IP协议下的Socket编程,掌握TCP协议的算法实现。二.实验原理客户端建立Socket,通过端口号和地址确定目标服务器,使用Connect连接到服务器,send发送消息,等待处理,通信完成后调用CloseSocket关闭Socket服务端建立Socket,声明自身的端口号和地址并绑定到Socket,使用Listen打开监听,然后不断用Accept去查看是否有连接,如果有,捕获Socket,并通过Recv获取消息的内容,通信完成后调用CloseSocket关闭这个对应Accept到的Socket,如果不再需要等待任何

2、客户端连接,那么用CloseSocket关闭掉自身的Socket三.实验代码(C++实现)服务器端代码如下:#pragmaonce#include#include#pragmacomment(lib,"ws2_32.lib")classCServerNet{public://初始化服务器,返回0表示成功intInit(constchar*address,intport);//更新数据voidRun();private:SOCKETm_sock;};intCServerNet::Init(constchar*address,intport){intrlt=

3、0;//用于记录错误信息,并输出intiErrorMsg;//初始化WinSockWSADatawsaData;iErrorMsg=WSAStartup(MAKEWORD(1,1),&wsaData);if(iErrorMsg!=NO_ERROR){//初始化WinSock失败printf("wsastartupfailedwitherror:%d",iErrorMsg);rlt=1;returnrlt;}//创建服务端Socketm_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(m_sock==INVALID_SOCKET){//创建So

4、cket异常printf("socketfailedwitherror:%d",WSAGetLastError());rlt=2;returnrlt;}//声明信息sockaddr_inserverAddr;serverAddr.sin_family=AF_INET;serverAddr.sin_port=port;serverAddr.sin_addr.s_addr=inet_addr(address);//绑定iErrorMsg=bind(m_sock,(sockaddr*)&serverAddr,sizeof(serverAddr));if(iErrorMsg<0){//绑定失败pr

5、intf("bindfailedwitherror:%d",iErrorMsg);rlt=3;returnrlt;}returnrlt;}voidCServerNet::Run(){//公开连接listen(m_sock,5);sockaddr_intcpAddr;intlen=sizeof(sockaddr);SOCKETnewSocket;charbuf[1024];intrval;do{//接收信息newSocket=accept(m_sock,(sockaddr*)&tcpAddr,&len);if(newSocket==INVALID_SOCKET){//非可用socket}el

6、se{//新socket连接printf("newsocketconnect:%d",newSocket);//消息处理do{printf("process");//接收数据memset(buf,0,sizeof(buf));rval=recv(newSocket,buf,1024,0);if(rval==SOCKET_ERROR)//这应该是个异常,当客户端没有调用closeSocket就直接退出游戏的时候,将会进入这里printf("recvsocketerror");if(rval==0)//recv返回0表示正常退出printf("endingconnection");el

7、se//显示接收到的数据printf("recv%s",buf);}while(rval!=0);//关闭对应Accept的socketclosesocket(newSocket);}}while(1);//关闭自身的Socketclosesocket(m_sock);}intmain(intargc,char**argv){CServerNetserverNet;intiRlt=server

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。