ChapterLinux网络编程重点.ppt

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

2. 套接字(socket) UDP套接字多次调用connect可能出于以下目的: 指定新地址的IP地址和端口号(对于TCP,connect只能调用一次) 断开套接字:需要再次调用connect,把地址结构上的地址族成员(sin_family或sin6_family)设置成AF_UNSPEC 性能 未连接套接字两次sendto执行步骤:连接套接字 - 输出第一个数据报 - 断开套接字连接?- 连接套接字?- 输出第二个数据报?-断开套接字连接; 已连接套接字两次write的步骤:连接套接字?- 输出第一个数据报?- 输出第二个数据报 void dg_cli_2(FILE *fp, int sockfd, struct sockaddr *cliAddr, socklen_t addrlen) { char sndmsg[MAXLINE]; char rcvmsg[MAXLINE + 1]; struct sockaddr *replyAddr = malloc(addrlen); while(fgets(sndmsg, MAXLINE, fp)) { if( connect(sockfd, cliAddr, addrlen) 0 ) {… } if( write( sockfd, sndmsg, strlen(sndmsg) ) != strlen(sndmsg)) {… } socklen_t len = addrlen; int rcount = read(sockfd, rcvmsg, MAXLINE); if(rcount 0) {… } rcvmsg[rcount] = 0; fputs(rcvmsg, stdout); } } 2. 套接字(socket) connect函数:客户请求连接 connect函数可能会返回错误,但通常会重连。 #include sys/socket.h /* 建立连接 * @return 成功返回0,出错返回-1 */ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); for (nsec = 1; nsec = MAXSLEEP; nsec = 1) { if (connect(sockfd, addr, alen) == 0) { /* Connection accepted. */ return(0); } /* Delay before trying again. */ if (nsec = MAXSLEEP/2) sleep(nsec); } 指数重连算法 2. 套接字(socket) accept函数:服务器接受某个客户连接 返回新的代表客户的套接字描述符; *addr是客户地址,可以置空(NULL); #include sys/socket.h /* 获得连接请求,建立连接 * @return 成功返回文件描述符,出错返回-1 */ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 2. 套接字(socket) close函数:关闭套接字 两端都要关闭; 服务器端,read调用返回0时,关闭套接字; close在还有未传输数据时阻塞。 2. 套接字(socket) 套接字通信: 端口号不小于1024; loopback回路:连接localhost:127.0.0.1; 指定IPV4地址时,需要使用inet_addr(“127.0.0.1”)函数; 需要指定一组允许连接的IP地址,否则使用INADDR_ANY变量 主机地址端口和网络地址端口需要转换:htons,htonl; //TCP示例服务器端 tcpSrv.c #include?stdlib.h #include?stdio.h #include?errno.h #include?string.h #include?unistd.h #include?netdb.h #include?sys/socket.h #include?netinet/in.h #include?sys/types.h #include?arpa/in

文档评论(0)

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

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

1亿VIP精品文档

相关文档