基于udp客户服务端通信程序.docx_第1页
基于udp客户服务端通信程序.docx_第2页
基于udp客户服务端通信程序.docx_第3页
基于udp客户服务端通信程序.docx_第4页
基于udp客户服务端通信程序.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

服务器端(系统指定IP地址,端口号5050)功能:服务器端从客户端接收并显示信息,并向客户端发送“Hello!Iamaserver”信息。客户端向服务器发送的信息为“Hello!Iamaclient”,同时也接收从服务器发送的信息并进行显示。1.2服务器端程序/*调试环境:VC+6.O程序名称:server.cpp服务器IP地址:由系统指定服务器端口:5050程序功能:从端口5050接收客户端发送来的数据,接收成功后显示从客户端收到的数据,客户端的IP地址和端口号;给客户端发送“Hello!Iamaserver.”字符串命令格式:server*/#include#pragmacomment(lib,WS2_32.lib)#include#include/服务器端口号为5050#defineDEFAULT_PORT5050/接收数据缓冲区长度#defineBUFFER_LENGTH1024voidmain()intiPort=DEFAULT_PORT;WSADATAwsaData;SOCKETsSocket;/客户地址长度intiLen;/发送的数据intiSend;/接收的数据intiRecv;/要发送给客户的信息charsend_buf=Hello!Iamaserver.;/接收数据的缓冲区charrecv_bufBUFFER_LENGTH;/本地地址和客户地址structsockaddr_inser,cli;printf(-n);printf(Serverwaitingn);printf(-n);if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf(FailedtoloadWinsockn);return;/产生服务器端套接口sSocket=socket(AF_INET,SOCK_DGRAM,0);if(sSocket=INVALID_SOCKET)printf(socket()Failed:%dn,WSAGetLastError();return;/以下建立服务器端地址ser.sin_family=AF_INET;/htons()函数把一个双字节主机字节顺序的数转换为网络字节顺序的数ser.sin_port=htons(iPort);/htonl()函数把一个主机字节顺序的数转换为网络字节顺序的数ser.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(sSocket,(LPSOCKADDR)&ser,sizeof(ser)=SOCKET_ERROR)printf(bind()Failed:%dn,WSAGetLastError();return;iLen=sizeof(cli);/初始化接收缓冲区memset(recv_buf,0,sizeof(recv_buf);/进入一个无限循环,进行数据接收和发送while(1)/从客户端接收数据iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR*)&cli,&iLen);if(iRecv=SOCKET_ERROR)printf(recvfrom()Failed.:%dn,WSAGetLastError();break;elseif(iRecv=0)break;else/输出接收到的数据printf(recvfrom():%sn,recv_buf);/输出客户IP地址和端口号printf(AcceptedclientIP:%s,port:%dn,inet_ntoa(cli.sin_addr),ntohs(cli.sin_port);/给客户发送信息iSend=sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCKADDR*)&cli,sizeof(cli);if(iSend=SOCKET_ERROR)printf(sendto()Failed.:%dn,WSAGetLastError();printf(-n);break;elseif(iSend=0)break;elseprintf(sendto()succeeded!n);printf(-n);closesocket(sSocket);WSACleanup();1.3客户端程序/*客户端程序*调试环境:VC+6.0程序名称:client.cpp客户端IP地址和端口:由系统指定程序功能:客户端程序向服务器发送数据、接收数据并进行显示命令格式:client服务器IP地址命令举例:client192.168.0.1说明:上面设要给IP地址为192.168.0.1、端口号为5050的服务器发送数据*/#include#pragmacomment(lib,WS2_32.lib)#include/服务器端口号为5050#defineDEFAULT_PORT5050/缓冲区长度#defineDATA_BUFFER1024voidmain(intargc,char*argv)WSADATAwsaData;SOCKETsClient;intiPort=5050;/服务器地址长度intiLen;/接收数据的缓冲intiSend;intiRecv;/要发送给服务器的信息charsend_buf=Hello!Iamaclient.;/接收数据的缓冲区charrecv_bufDATA_BUFFER;/服务器端地址structsockaddr_inser;/处理命令行中/接收数据的缓冲区初始化memset(recv_buf,0,sizeof(recv_buf);if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf(FailedtoloadWinsock.n);return;/建立服务器端地址ser.sin_family=AF_INET;ser.sin_port=htons(iPort);ser.sin_addr.s_addr=inet_addr(127.0.0.1);/建立客户端数据报套接口sClient=socket(AF_INET,SOCK_DGRAM,0);if(sClient=INVALID_SOCKET)printf(socket()Failed:%dn,WSAGetLastError();return;iLen=sizeof(ser);/向服务器发送数据iSend=sendto(sClient,send_buf,sizeof(send_buf),0,(structsockaddr*)&ser,iLen);if(iSend=SOCKET_ERROR)printf(sendto()Failed:%dn,WSAGetLastError();return;elseif(iSend=0)return;elseprintf(sendto()succeeded.n);/从服务器接收数据iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(structsockaddr*)&ser,&iLen);if(iRecv=SOCKET_ERROR)printf(recvfrom()Failed.:%dn,WSAGetLastError();retu

温馨提示

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

评论

0/150

提交评论