LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 865|回复: 5

问各位大侠一个网络编程的问题

[复制链接]
发表于 2003-10-26 17:45:24 | 显示全部楼层 |阅读模式
偶做了一个服务器程序,就是来一个连接,就fork一个进程
处理的 那种。现在遇上两个问题。
1
有的时候客户端会返回“拒绝连接”的错误,但服务端程序却好好的跑着,
我猜想是不是两个连接同时进来,服务端程序在fork的时候没法处理第二个连接?
有没有办法解决这个问题?
2
服务端程序如果意外退出或者被kill,立刻重新启动程序,返回“端口已被使用”
的错误,大概得过半分钟才能重启成功,这是什么原因?怎么解决?

请各位大侠指点
发表于 2003-10-26 18:17:43 | 显示全部楼层
1、你的服务器listen的时候队列多大?
2、这个是tcp/ip要求的,必需等待一段时间
发表于 2003-10-30 23:36:07 | 显示全部楼层
我连接的时候没有问题,到是用客户机连接了N次以后,用PS看,系统里就有N个子进程,但我的子进程明明是用EXIT退出了呀,怎么会还在?
发表于 2003-10-30 23:40:29 | 显示全部楼层

  1. if (!fork()){ /* 子进程代码段 */
  2.                 close(sockfd);
  3.                 if (send(client_fd, "Hello, you are connected!\n", 26, 0) == -1)
  4.                         perror("send出错!");
  5.                 else{
  6.                         if((received=recv(client_fd, buf, MAXSIZE,0)) == 0)
  7.                                 perror("recv Error!");
  8.                         buf[received]='\0';
  9.                         printf("Response: %s\n",buf);
  10.                         close(client_fd);
  11.                         }
  12.                 exit(0);
  13.         }
复制代码
发表于 2003-10-31 23:11:10 | 显示全部楼层
man waitpid
or
man wait
发表于 2003-11-1 10:28:17 | 显示全部楼层
Thanks, 我现在明白一点了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表