免费注册 查看新帖 |

Chinaunix

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

请问listen后,为什么用netstat -an 检测不到相应端口. 在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-03 14:41 |只看该作者 |倒序浏览
请问我在hp-ux下写一网络通讯程序,代码如下
  1. int main(int argc, char **argv)
  2. {
  3.         int listenfd, connfd, i, clilen, pid;
  4.         struct sockaddr_in cliaddr, servaddr;

  5.         if((listenfd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) < 0)
  6.         {
  7.                 printf("create socket failed.\n");
  8.                 exit(1);
  9.         }
  10.         printf("create socket success.\n");

  11.         bzero(&servaddr,sizeof(servaddr));
  12.         servaddr.sin_family = AF_INET;
  13.         servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  14.         servaddr.sin_port = htons(20000);

  15.         while(i < 0)
  16.                 i = bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
  17.         if(i < 0)
  18.         {
  19.                 printf("socket bind failed.\n");
  20.                 exit(1);
  21.         }
  22.         printf("socket bind success.\n");

  23.         if(listen(listenfd,10) < 0)
  24.         {
  25.                 printf("listen failed.\n");
  26.                 exit(1);
  27.         }
  28.         printf("LISTEN READY......................\n");

  29.         for(;;)
  30.         {
  31.                 clilen = sizeof(cliaddr);
  32.                 if((connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen)) < 0)
  33.                 {
  34.                         if(errno == EINTR)
  35.                         {
  36. //                                printf("accept continue\n");
  37.                                 continue;
  38.                         }
  39.                         else
  40.                         {
  41.                                 perror("accept error\n");
  42.                                 printf("accept failed.\n");
  43.                         }
  44.                 }

  45.                 if((pid = fork()) == 0)
  46.                 {
  47.                         close(listenfd);
  48.                         deal_with(connfd);
  49.                         exit(9);

  50.                 }
  51.                 else if(pid >; 0)
  52.                 {
  53.                         signal(SIGCHLD,sig_child);
  54.                 }
  55.                 else
  56.                 {
  57.                         perror("fork error \n");
  58.                         exit(1);
  59.                 }

  60.                 close(connfd);
  61.         }
  62. }
复制代码


可是我用netstat -an | grep 20000,确查不到这个监听,是怎么回事呀,请高手指教

谢谢啦!

论坛徽章:
0
2 [报告]
发表于 2004-06-04 12:26 |只看该作者

请问listen后,为什么用netstat -an 检测不到相应端口. 在线等

while(i < 0)
      i = bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

i初始值是多少,一定会执行 bind 吗??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP