资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
Socket编程利用TCP协议的实验报告样本 t Socket编程利用P TCP协议的实验报告本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 Socket编程报告(TCP/IP协议)本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 一实验目的通过C+来实现TCP/IP协议下的Socket编程,掌握TCP协议的算法实现。 二实验原理本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 客户端建立Socket,通过端口号和地址确定目标服务器,使用Connect连接到服务器,send发送消息,等待处理,通信完成后调用CloseSocket关闭Socket服务端建立Socket,声明自身的端口号和地址并绑定到Socket,使用Listen打开监听,然后不断用Aept去查看是否有连接,如果有,捕获Socket,并通过Recv获取消息的内容,通信完成后调用CloseSocket关闭这个对应Aept到的Socket,如果不再需要等待任何客户端连接,那么用CloseSocket关闭掉自身的Socket三实验代码(C+实现)服务器端代码如下:#pragma once#include#include#pragma ment(lib,)class CServerNetpublic:/初始化服务器,返回00表示成功int Init(const char*address,int port);/更新数据void Run();private:SOCKET m_sock;int CServerNet:Init(const char*address,int port)int rlt=0;/用于记录错误信息,并输出int iErrorMsg;/初始化WinSock WSADatawsaData;iErrorMsg=WSAStartup(MAKEWORD(1,1),&wsaData);if(iErrorMsg!=NO_ERROR)/初始化k WinSock失败printf(wsastartup failed with error:%dn,iErrorMsg);rlt=1;return rlt;本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 /创建服务端Socket m_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(m_sock=INVALID_SOCKET)/创建t Socket异常printf(socket failed with error:%dn,WSAGetLastError();rlt=2;return rlt;/声明信息sockaddr_in serverAddr;=AF_I NET;=port;=i_addr(address);/绑定iErrorMsg=bind(m_sock,(sockaddr*)&serverAddr,sizeof(serverAddr);if(iErrorMsg0)/绑定失败printf(bind failed with error:%dn,iErrorMsg);rlt=3;return rlt;return rlt;void CServerNet:Run()/公开连接listen(m_sock,5);sockaddr_in tcpAddr;int len=sizeof(sockaddr);SOCKET newSocket;char buf1024;int rval;do/接收信息newSocket=aept(m_sock,(sockaddr*)&tcpAddr,&len);if(newSocket=INVALID_SOCKET)本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 /非可用socketelse/新t socket连接printf(new socketconnect:%dn,newSocket);/消息处理doprintf(processn);/接收数据memset(buf,0,sizeof(buf);rval=recv(newSocket,buf,1024,0);if(rval=SOCKET_ERROR)/这应该是个异常,当客户端没有调用t closeSocket就直接退出游戏的时候,将会进入这里printf(recv socketerrorn);if(rval=0)v/recv返回00表示正常退出printf(ending connection);else/显示接收到的数据printf(recv%sn n,buf);while(rval!=0);/关闭对应t Aept的socket closesocket(newSocket);while (1);/关闭自身的Socket closesocket(m_sock);int main(int argc,char*argv)CServerNet serverNet;int iRlt=(,8888);if(iRlt=0)本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 printf(in itok.n);();else printf(serverNet initfailedwith error:%dn,iRlt);system(pause);客户端代码如下:#pragma once#include#include#pragma ment(lib,)class CClientNetpublic:/连接上指定服务器int Connect(int port,const char*addres s);/发送信息int SendMsg(const char*msg,int len);/关闭void Close();private:SOCKET m_sock;int CClientNet:Connect(int port,const char*address)int rlt=0;/用于记录错误信息并输出int iErrMsg;/启动WinSock WSADatawsaData;iErrMsg=WSAStartup(MAKEWORD(1,1),&wsaData);if(iErrMsg!=NO_ERROR)/有错误printf(failedwithwsaStartup error:%dn,iErrMsg);rlt=1;return rlt;/创建Socket本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 m_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(m_sock=INVALID_SOCKET)/创建t Socket失败printf(socket failedwith error:%dn,WSAGetLastError();rlt=2;return rlt;/目标服务器数据sockaddr_in sockaddrServer;=AF_INET;=port;=i_addr(address);/连接k,sock与目标服务器连接iErrMsg=connect(m_sock,(sockaddr*)&sockaddrServe r,sizeof(sockaddrServer);if(iErrMsg0)printf(connect failedwitherror:%dn,iErrMsg);rlt=3;return rlt;return rlt;int CClientNet:SendMsg(const char*msg,int len)int rlt=0;int iErrMsg=0;/发送消息,指定k sock发送消息iErr Msg=send(m_sock,msg,len,0);if(iErrMsg0)/发送失败printf(send msgfailedwitherror:%dn,iErrMsg);rlt=1;return rlt;本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 return rlt;void CClientNet:Close()closesocket(m_sock);int main()CClientNet client;/(即本地),端口号为88888的服务端printf(Connectn);(8888,);/发送消息printf(send msgn);(hello0,sizeof(hello0);/关闭socket printf(closen);();system(pause);本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 四实验结果本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 五心得体会通过本次实验,我了解了TCP/IP协议与UDP协议的异同之处,理解了Socket在通信中的地位和作用。 在调试程序过程中的查错纠错也让我对程序有了深刻的理解,虽然程序是借鉴他人的,但我通过调试之后的进一步解析阅读也掌握了其中的原理,收获颇丰。 内容仅供参考
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号