免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1984 | 回复: 2
打印 上一主题 下一主题

服务器并发编程,为什么接收不到?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-30 16:04 |只看该作者 |倒序浏览
  1. #include "unp.h"

  2. int main(void)
  3. {
  4.     int listen_fd,accept_fd;
  5.     struct sockaddr_in client_addr;
  6.     socklen_t socklen=sizeof(client_addr);
  7.     int n=1;
  8.     pid_t pid;

  9.     init_socket(listen_fd,SOCK_STREAM,client_addr,8888);
  10.     setsockopt(listen_fd,SOL_SOCKET,SO_REUSEADDR,&n,sizeof(int));

  11.     listen(listen_fd,5);

  12.     while(1)
  13.     {
  14.         accept_fd=accept(listen_fd,(struct sockaddr *)&client_addr,&client_addr);
  15.         if(errno==EINTR)
  16.             continue;
  17.         else if(accept_fd<0)
  18.         {
  19.             printf("Accept Error:%s\n",strerror(errno));
  20.             continue;
  21.         }
  22.         else
  23.         {
  24.             write(0,"success accept\n",strlen("success accept"));
  25.         }

  26.         if((pid=fork())==0)
  27.         {
  28.             char buffer[1024];
  29.             n=read(accept_fd,buffer,1024);
  30.             buffer[n]='\0';
  31.             write(0,buffer,strlen(buffer));
  32.             close(accept_fd);
  33.             exit(0);
  34.         }
  35.         else if(n<0)
  36.         {
  37.             perror("fork");
  38.             exit(0);
  39.         }
  40.         close(accept_fd);
  41.     }
  42. }
复制代码
明明显示success accept了,但是接收不到消息

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
2 [报告]
发表于 2010-10-30 17:41 |只看该作者
这个代码看得真有点不知道什么感觉。循环里那一陀。。。

其实还是看看例子先好了, 那几个步骤弄清楚先。

论坛徽章:
0
3 [报告]
发表于 2010-10-30 17:48 |只看该作者
18 行 accept 第三个参数错误
40 行 应该是pid

18行那个改了就ok了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP