(精选)网络应用程序设计(方敏 西电版)第6章 带外数据课件.pptVIP

(精选)网络应用程序设计(方敏 西电版)第6章 带外数据课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件

#define BACKLOG 10 void signal_urg(int signo); ? main() { /* sock fd 用于进行监听,new_fd 用于处理新的连接 */ int sock fd, new_fd ; /* 用于存储以前系统缺省的SIGURL 处理器的变量 */ void * old_signal_urg_handle ; /* 本地地址信息*/ struct sockaddr_in my_addr; /* 连接者的地址信息*/ struct sockaddr_in client_addr; int sin_size; int n ; char buff[100] ; /* 判断处理socket()是否出错,错则返回*/ if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror(socket error); exit(1); } /* 清结构空间*/ bzero((my_addr),sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(SERV_PORT); /* 将运行程序机器的IP 填充入s_addr */ my_addr.sin_addr.s_addr = INADDR_ANY; /* 如果调用bind()失败,则给出错误提示,退出*/ if (bind(sockfd, (struct sockaddr *)my_addr,sizeof(struct sockaddr)) == -1) { perror(bind error); exit(1); } /* 如果调用listen 失败,则给出错误提示,退出*/ if (listen(sockfd, BACKLOG) == -1) { perror(listen error); exit(1); } /* 设置SIGURG 的处理函数 signal_urg */ old_signal_urg_handle = signal(SIGURG, signal_urg); /* 更改套接字的宿主*/ fcntl(sockfd, F_SETOWN, getpid()); while(1) { sin_size = sizeof(struct sockaddr_in); if ((new_fd =accept(sockfd,(struct sockaddr *)client_addr, sin_size))== -1) { perror(accept error); continue; } /* 提示出现的连接信息*/ printf(server: connection from %s\n, inet_ntoa(client_addr.sin_addr)); /* 建立一个子进程来处理与建立套接字的通信 */ if (!fork()) while(1) { if((n = recv(new_fd, buff, sizeof(buff)–1)) == 0) { printf(receiving end\n); break ; } buff[n] = 0 ; printf(Recv %d bytes: %s\n, n, buff); } /* 关闭new_fd 代表的这个套接字连接*/ close(new_fd); } } /* 等待所有的子进程都退出*/ while(waitpid(-1,NULL,WNOHANG) 0); /* 恢复系统以前对SIGURG 的处理器*/ signal(SIGURG, old_signal_urg_handle); } void signal_urg(int signo) { int m; char buf[100] ; printf(SIGURG received\n); m = recv(new_fd, buf, sizeof(buf)– 1, MSG_OOB); buf [m] = \0; printf(Recv %d OOB byte: %s\n , m, buf); } void signal_urg(int signo) { i

文档评论(0)

youngyu0329 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档