基于UDP的客戶与服务器通信程序.docVIP

  • 12
  • 0
  • 约4.27千字
  • 约 8页
  • 2016-11-27 发布于重庆
  • 举报
基于UDP的客戶与服务器通信程序

实验名称 基于UDP的客户与服务器通信程序 所属课程名称 TCP/IP协议与网络编程 实验时间 2010/11/12 实验地点 信控系二机房 学生姓名 陈红梅 实验器材及环境 PC机、Visual C++ 6.0 实验目的 在C++环境中编写代码,调用Winsock AIP基本函数,实现一个基于UDP的客户/服务器通信程序。 实验内容 熟练掌握函数的调用及其编程; 理解掌握基于UDP的客户/服务器通信程序; 理解函数的Winsock AIP基本函数的调用、返回值的类型、函数功能等。 实验步骤 进入Visual C++6.0 创建一个空工程sy1 创建area.c文件 流程图 否iRecv=recvfrom() 否 iRecv=recvfrom() 调用失败 输出调用失败 开始 确定端口号 输出服务器 WSAStartup sListen=Socket Bind() 是 是 是 否 否 否 否 1 isend=sendto() !=0 调用成功 Closesocket (saccept) Closesocket(saccept) 结束 ==0 !=0 输出接收到的数据、IP地址、端口号 ==0 编写代码 程序一:服务器端 #includeWinsock2.h #includestdio.h #includestdlib.h #define DEFAULT_PORT 5050 #define BUFFER_LENGTH 1024 #pragma comment(lib,WS2_32.lib) void main() { int iPort=DEFAULT_PORT; WSADATA wsaData; SOCKET sSocket; int iLen,iRecv,iSend; struct sockaddr_in ser,cli; char send_buf[]=Hollo!I am a server; char recv_buf[BUFFER_LENGTH]; printf(--------------------); printf(Server waiting); printf(--------------------); if(WSAStartup(MAKEWORD(2,2),wsaData)!=0) { printf(环境初始化错误:\n); return; } sSocket=socket(AF_INET,SOCK_DGRAM,0); if(sSocket==INVALID_SOCKET) { printf(socket()函数调用失败:\n,WSAGetLastError()); return; } ser.sin_family=AF_INET; ser.sin_port=htons(iPort); ser.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sSocket,(LPSOCKADDR)ser,sizeof(ser))==SOCKET_ERROR) { printf(bind()函数调用失败:\n,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()函数调用失败:\n,WSAGetLastError()); break; } else if(iRecv==0) break; else { printf(recvfrom():%d\n,recv_buf); printf(客户端的IP地址、端口号:%d\n,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()函数调用失败:\n,WSAGetLastError()

文档评论(0)

1亿VIP精品文档

相关文档