UDP套接字编程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UDP套接字编程

UDP套接字编程 1、服务器: #includestdio.h #includestring.h #includeunistd.h #includesys/types.h #includesys/socket.h #includestdlib.h #includenetinet/in.h #includearpa/inet.h #define PORT 1234 #define MAXDATASIZE 100 Main() { int sockfd; struct sockaddr_in server; struct sockaddr_in client; socklen_t len; int num; char buf[MAXDATASIZE]; if ((sockfd = socket(AF_INET,SOCK_DGRAM, 0)) ==-1) { perror(Creating socket failed.); exit(1); } bzero(server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(PORT); server.sin_addr.s_addr = htonl (INADDR_ANY); if(bind(sockfd,(struct sockaddr *)server,sizeof(server)) == -1) { perror(Bind() error.); exit(1); } len=sizeof(client); while(1) { num = recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)client,len); if(num0) { perror(recvfrom() error\n); exit(1); } buf[num]=\0; printf(You got a message %s from cient.\nIts ip is %s,port is %d.\n,buf,inet_ntoa(client.sin_addr),htons(client.sin_port)); sendto (sockfd,Welcome\n,8,0,(struct sockaddr *)client,len); if(!strcmp(buf,bye)) break; } close(sockfd); } 第1~8行: 所需的头文件 第9~10行:定义端口号和接收缓冲区的大小 第19~23行:调用socket函数,产生UDP套接字。如果出错,则打印错误信息。 第24~27行:初始化server套接字地址结构,并对地址结构中的成员赋值。当前的本地地址设为INADDR_ANY,端口号为1234,这里的端口号和IP地址都要转换成网络字节序。 第28~32行:将套接字和指定的地址协议绑定。 第36行:接收客户端的信息,并存放在buf中,客户端的地址信息存放在client地址结构中。如果成功,num返回接收的字符串长度。 第37~41行,如果调用recvfrom()函数发生错误,则打印错误信息。 第43行:显示接收到的客户信息、客户的IP地址和端口号.通过inet_ntoa()函数将IP地址转换成可显示的ASCII字符串,通过htons()函数将端口号转换成网络字节序。 第44行:发送Welcome字符串给客户端。 第45行和46行:如果客户端发来的字符串是bye,则退出循环。 第48行:关闭套接字。 客户端: #includestdio.h #includestdlib.h #includeunistd.h #includestring.h #includesys/types.h #includesys/socket.h #includenetinet/in.h #includenetdb.h #define PORT 1234 #define MAXDATASIZE 100 int main(int argc,char *argv[]) { int sockfd,num; char buf[MAXDATASIZE]; struct hostent *he; struct sockaddr_in server,peer; if (argc !=3) { printf(Usage: %s IP Address message\n,argv[0]); exit(1); } if ((he =gethostbyname(argv[1]))==NULL) { printf(gethostbyname() error\n); exit(1); } if ((sockfd =

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档