免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-03 14:25 |只看该作者 |倒序浏览
请问我在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-03 15:58 |只看该作者

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

没人知道吗

定一下吧,别沉下去。

论坛徽章:
0
3 [报告]
发表于 2004-06-03 17:32 |只看该作者

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

i 没有初始化

  1. while(i < 0)
  2.       i = bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-06-03 17:40 |只看该作者

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

你的程序都编译不过啊!!!!!!!!

论坛徽章:
0
5 [报告]
发表于 2004-06-03 17:47 |只看该作者

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

我弄了几个空函数代替了你的 sig_child 以及 deal_with 。
在 linux  2.4.20-8smp #1 SMP 上编译运行了
运行netstat -an|grep 2000 能看到这条监听记录:
[root@max2003 bin]# netstat -an|grep 20000
tcp        0      0 0.0.0.0:20000           0.0.0.0:*               LISTEN

论坛徽章:
0
6 [报告]
发表于 2004-06-03 17:50 |只看该作者

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

[root@max2003 bin]# netstat -an|grep 20000
tcp        0      0 192.168.0.243:20000     0.0.0.0:*               LISTEN
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP