资源描述:
《udp套接口通信实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一:udp套接口通信实验一、实验目的学会使用标准的POSIX套接口标准函数,满足客户端和服务器的通信需求。l建立udp套接口l接收与发送udp数据包l解析与处理udp数据包二、预备知识熟悉udp套接口函数使用方法三、实验预计时间30分钟左右四、实验步骤:a)根据《unix网络编程》书中的实例或者网上搜得的例子作为参考,编写.c和.h文件。分别编写服务器和客户端两端的代码,其中,由于是在一台机器上开发,因此客户端的代码访问服务器的地址定为127.0.0.1即可。b)看懂例子makefile。c)编译、运行五、实验源代码及结果服务端程序UDPServer.c#include
2、#include#include#include#include#include#include#include#include#include#include#defineSERVER_PORT8888#defineMAX_MSG_SIZE1024voidudps_respon(intsockfd){structsockaddr_inaddr;intn;soc
3、klen_taddrlen;charmsg[MAX_MSG_SIZE];while(1){/*等待数据请求*/n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structsockaddr*)&addr,&addrlen);msg[n]=0;/*显示服务器端已经收到了信息*/fprintf(stdout,"Ihavereceived%s",msg);/*数据回送*/sendto(sockfd,msg,n,0,(structsockaddr*)&addr,addrlen);}}intmain(void){intsockfd;structsockaddr_inaddr
4、;sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"SocketError:%s",strerror(errno));exit(1);}bzero(&addr,sizeof(structsockaddr_in));addr.sin_family=AF_INET;addr.sin_addr.s_addr=htonl(INADDR_ANY);addr.sin_port=htons(SERVER_PORT);if(bind(sockfd,(structsockaddr*)&addr,sizeof(addr))<0){
5、fprintf(stderr,"BindError:%s",strerror(errno));exit(1);}udps_respon(sockfd);close(sockfd);}客户端程序UDPClient.c,使用方法UDPClientServerIPServerPort#include#include#include#include#include#include#include#include#includ
6、e#include#include#defineMAX_BUF_SIZE1024voidudpc_requ(intsockfd,conststructsockaddr*addr,intlen){charbuffer[MAX_BUF_SIZE];intn;while(1){fgets(buffer,MAX_BUF_SIZE,stdin);sendto(sockfd,buffer,strlen(buffer),0,addr,len);bzero(buffer,MAX_BUF_SIZE);/*从网络上读,写到屏幕上*/n
7、=recvfrom(sockfd,buffer,MAX_BUF_SIZE,0,NULL,NULL);buffer[n]=0;fputs(buffer,stdout);}}intmain(intargc,char**argv){intsockfd,port;structsockaddr_in*p;structsockaddraddr;if(argc!=3){fprintf(stderr,"Usage