编一个用UDP方式进行Socket通信的程序。发送方向指定的主机发送一个数据内容为“One data packet。”的数据包,并接收主机发回的一个数据包后显示数据包内容。假设对方主机的IP地址为192.168.123.234,端口号为12345。

admin2016-05-12  9

问题 编一个用UDP方式进行Socket通信的程序。发送方向指定的主机发送一个数据内容为“One data packet。”的数据包,并接收主机发回的一个数据包后显示数据包内容。假设对方主机的IP地址为192.168.123.234,端口号为12345。

选项

答案程序清单24-9为用UDP方式进行Socket通信的程序。 程序清单24-9:dupSend.c #include<stdio.h>, #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> int port=12345; void main() { int sockfd,n; char sendbuf[512],recvbuf[512]; //发送和接收缓冲区 struct sockaddr_in addr; sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd==-1) perror("Opening socket"); memset(&addr,0,sizeof(addr)); //清除结构中的内容 addr.sin_family=AF_INET; addr.sin_addr.s_addr=inet_addr("192.168.123.234"); addr.sin_port=htons(port); sprintf(sendbuf,"One data packet\n");//发送的数据 //发送数据包 if(sendto(sockfd,sendbuf,sizeof(sendbuf),0,(struct sockaddr*)&addr, sizeof(addr))<0) perro("Tring to sendto"); //接收数据包 n=recvfrom(sockfd,recvbuf,sizeof(recvbuf),0,NULL,NULL); recvbuf[n]=0; fputs(recvbuf,stdout); close(sockfd); } dupSend.c把服务器的IP地址和端口号添加到IPv4的套接字地址结构中,以指明数据包将发往的目的地。程序使用sendto()发送了一个数据包,然后使用recvfrom()接收一个数据包,并用fputs()输出到标准输出上。recvfrom()函数的最后两个参数使用了空指针NULL,以通知内核,用户对信息来源不感兴趣。

解析
转载请注明原文地址:https://kaotiyun.com/show/yvNx777K
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)