日期:2014-05-16  浏览次数:20765 次

网络连接错误 请高手指示 在线等
开始连接正常 通讯一段时间后 网络中断 再次能连接上 但下面的语句并没有阻塞,value一直返回-1,并且通讯命令都无效了,这是怎么回事,谢谢!

value = accept(m_socket_fd, (struct sockaddr*)&client_addr, &sin_size);
 
if (value == -1)
{
  perror("accept ERROR:");
}

------解决方案--------------------
while(1)
{
······
······
value = accept(m_socket_fd, (struct sockaddr*)&client_addr, &sin_size);
 
if (value == -1)
{
if (value == EINTR) continue;
perror("accept ERROR:");
}
······
······
}
这样你在运行一下试试,我怀疑是你在运行接收链接的时候又中断请求发生了!!!
------解决方案--------------------
#define EMFILE 24
EMFILE The per-process limit of open file descriptors has been reached.
服务端用的是线程还是进程?
------解决方案--------------------
描述符用满了,建议你perror看看错误是什么。

需要打开描述符限制,命令如下,放在/etc/rc.local即可

ulimit -SHn 65535
------解决方案--------------------
探讨

描述符用满了,建议你perror看看错误是什么。

需要打开描述符限制,命令如下,放在/etc/rc.local即可

ulimit -SHn 65535