TCP IP协议实验报告.doc_第1页
TCP IP协议实验报告.doc_第2页
TCP IP协议实验报告.doc_第3页
TCP IP协议实验报告.doc_第4页
TCP IP协议实验报告.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物联网工程学院实验报告 报告主题 TCP/IP协议与网络编程实验四 班级 计科0901 姓名 总学号 一、实验目的: 1、加深对上课内容的理解。 2、了解UDP客户/服务器程序通信,熟悉操作流程以及理解相关原理知识。 3、对上一次的实验进行改进,实现注册。二、实验要求: 1、实验过程中相互独立完成,弄懂原理 2、通过指定方式进行实验,并实时对流程及数据进行记录 3、实验完成后按照要求完成实验报告三、实验代码:Client:#include #include #include #pragma comment(lib,ws2_32.lib)#define DEFAULT_PORT 5051#define DATA_BUFFER 1024#define MESSAGE_RIGISTER 0x31#define MESSAGE_LOGIN 0x32void main()WSADATA wsaData;if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0)return;SOCKET sClient;int iPort=DEFAULT_PORT;char IPAdr1024;char cMessage1024;memset(cMessage,0,sizeof(cMessage);memset(IPAdr,0,sizeof(IPAdr);int iLen;memset(IPAdr,0,sizeof(IPAdr);printf(Please input servers IPn);scanf(%s,IPAdr);int iUsage=0;char LoginName1024;char cMessageHead1024;char cPassWord1024;memset(cMessageHead,0,sizeof(cMessageHead);memset(LoginName,0,sizeof(LoginName);struct sockaddr_in ser;ser.sin_family=AF_INET;ser.sin_port=htons(iPort);ser.sin_addr.s_addr=inet_addr(IPAdr);sClient=socket(AF_INET,SOCK_STREAM,0);if (sClient=INVALID_SOCKET)return;if (connect(sClient,(struct sockaddr*)&ser,sizeof(ser)=INVALID_SOCKET)return;while (1)memset(cMessageHead,0,sizeof(cMessageHead);memset(LoginName,0,sizeof(LoginName);memset(cMessage,0,sizeof(cMessage);memset(cPassWord,0,sizeof(cPassWord);printf(1 注册用户n);printf(2 登录用户n);scanf(%d,&iUsage);if (iUsage=1)printf(输入登录名n);scanf(%s,LoginName);printf(请输入密码n);scanf(%s,cPassWord);strcat(cMessageHead,1);elseprintf(Please Input LoginName);scanf(%s,LoginName);printf(请输入密码n);scanf(%s,cPassWord);strcat(cMessageHead,2);strcat(cMessageHead,LoginName);strcat(cMessageHead,+);strcat(cMessageHead,cPassWord);char bufDATA_BUFFER;memset(buf,0,sizeof(buf);strcat(cMessage,cMessageHead);if (iUsage=1)iLen=send(sClient,cMessage,sizeof(cMessage),0); if (iLen=SOCKET_ERROR)printf(发送失败);continue;else if (iUsage=2)while (1)memset(buf,0,sizeof(buf);memset(cMessage,0,sizeof(cMessage);scanf(%s,buf);strcat(cMessage,cMessageHead);strcat(cMessage,:);strcat(cMessage,buf);iLen=send(sClient,cMessage,sizeof(cMessage),0);char cSuccess1024;iLen=recv(sClient,cSuccess,sizeof(cSuccess),0);if (iLen=SOCKET_ERROR)return;if (cSuccess0!=1)printf(登录失败n);break;closesocket(sClient);WSACleanup();总Server:#include #include /#include #include #pragma comment(lib,ws2_32.lib)#define RECEIVE_PORT 5051#define SEND_PORT 5050#define SOCKET_NUMBER 10#define MESSAGE_RIGISTER 0x31#define MESSAGE_LOGIN 0x32SOCKET pSend10;int ipSend=0;char pLoginInfoTable101024;int iPointerLoginTable=0;typedef struct PARAMETERTHREAD SOCKET sAccept;struct sockaddr_in addrSock;PARAMETERTHREAD;void CopyAddrIN(struct sockaddr_in* pDest,struct sockaddr_in* pSource)pDest-sin_addr.s_addr=pSource-sin_addr.s_addr;pDest-sin_family=pSource-sin_family;pDest-sin_port=pSource-sin_port;bool JudgeLogin(char buf1024)bool bRT=false;char tmp1024;strcpy(tmp,buf);for (int j=0;jstrlen(tmp);j+)if (tmpj=:)tmpj=0;for (int i=0;iaddrSock.sin_addr.s_addr;pSendipSend=socket(AF_INET,SOCK_STREAM,0);if (pSendipSend=INVALID_SOCKET)return;if(connect(pSendipSend,(structsockaddr*)&addrSend,sizeof(addrSend)=INVALID_SOCKET)return;char cLoginInfo1024;ipSend+;while (1)char buf1024;memset(buf,0,sizeof(buf);int iLen=recv(pPMTHREAD-sAccept,buf,sizeof(buf),0);if (iLen=SOCKET_ERROR)return;printf(%sn,buf);switch (buf0)case MESSAGE_RIGISTER:strcpy(char*)pLoginInfoTableiPointerLoginTable+,&buf1);break;case MESSAGE_LOGIN:char cSucess1024;if (JudgeLogin(&buf1)memset(cSucess,0,sizeof(cSucess);cSucess0=1;int iSend=0;iSend=send(pPMTHREAD-sAccept,cSucess,sizeof(cSucess),0);if (iSend=SOCKET_ERROR)return;for (int i=0;iaddrSock.sin_addr);iSend=send(pSendi,buf,sizeof(buf),0);elsechar cEnd1024;cEnd0=0;cEnd1=0;memset(cEnd,0,sizeof(cEnd);iLen=send(pSendipSend,cEnd,sizeof(cEnd),0);memset(cSucess,0,sizeof(cSucess);cSucess0=0;int iSend=0;iSend=send(pPMTHREAD-sAccept,cSucess,sizeof(cSucess),0);if (iSend=0)return;break;_endthread();void main()WSADATA wsaData;if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0)return;SOCKET sListen;struct sockaddr_in addrListen;int iRecPort=RECEIVE_PORT;int iSendPort=SEND_PORT;addrListen.sin_family=AF_INET;addrListen.sin_port=htons(iRecPort);addrListen.sin_addr.s_addr=htonl(INADDR_ANY);sListen=socket(AF_INET,SOCK_STREAM,0);if (sListen=INVALID_SOCKET)return;if (bind(sListen,(struct sockaddr*)&addrListen,sizeof(addrListen)=SOCKET_ERROR)return;if (listen(sListen,5)=SOCKET_ERROR)return;while (1)struct sockaddr_in tmpAddr;PARAMETERTHREAD pParameter;int iLen=sizeof(tmpAddr);pParameter.sAccept=accept(sListen,(struct sockaddr*)&tmpAddr,&iLen);if (pParameter.sAccept=SOCKET_ERROR)printf(接受失败);CopyAddrIN(&(pParameter.addrSock),&tmpAddr);_beginthread(DealTalk,0,(void*)&pParameter);for (int i=0;iipSend;i+)closesocket(pSendi);closesocket(sListen);WSACleanup();分Server:#include #include #include #pragma comment(lib,ws2_32.lib)#define DEFAULT_PORT 5050void main()WSADATA wsaData;SOCKET sListen,sAccept;struct sockaddr_in inSer,ser;int iLen=sizeof(ser);if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0)return;inSer.sin_family=AF_INET;inSer.sin_port=htons(DEFAULT_PORT);inSer.sin_addr.s_addr=htonl(INADDR_ANY);sListen=socket(AF_INET,SOCK_STREAM,0);if (sListen=INVALID_SOCKET)return;if (bind(sListen,(struct sockaddr*)&inSer,sizeof(inSer)=SOCKET_ERROR)return;if (listen(sListen,5)=SOCKET_ERROR)return; sAccept=accept(sListen,(struct sockaddr*)&ser,&iLen);if (sAccept=INVALID_SOCKET) return;while (1)char buf1024;char bufIP1024;/iLen=recv(sAccept,bufIP,sizeof(bufIP),0);iLen=recv(sAccept,buf,sizeof(buf),0);if (buf0=0)continue;char* pTmpChar=strchr(buf,+);char* pTmpText=st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论