服务器:
vxworks 6.3
调用通常的套接字、绑定、侦听,然后:
for (;;)
{
client = accept(sfd,NULL,NULL);
// pass client to worker thread
}
客户端:
.NET 2.0
TcpClient 构造函数连接到采用字符串主机名和 int 端口的服务器,例如:
TcpClient client = new TcpClient(server_ip, port);
当服务器在 windows (native c++) 中编译和执行时,这工作正常。
间歇性地,TcpClient 的构造函数将返回实例,不会抛出任何异常,但 vxWorks 中的 accept 调用不会随客户端 fd 返回。tcpstatShow 表示没有接受。
什么可能使 TcpClient 构造函数(调用“Connect”)返回实例,而服务器上的接受调用不返回?它似乎与系统在后台执行的操作有关 - 当服务器忙于将数据持久保存到闪存或客户端尝试连接时的 NFS 共享时,似乎更有可能出现此症状,但当它发生时可能会发生也不是。
我尝试调整运行接受的线程的优先级,
我查看了“听”中队列的大小。够了。
可用的文件描述符的总数应该足够了(虽然还没有验证这一点,早上第一件事)