服务器:
的VxWorks 6.3
调用常用的插座,绑定,听,然后:TCP/IP接受不返回,但客户端不
for (;;)
{
client = accept(sfd,NULL,NULL);
// pass client to worker thread
}
客户端:
.NET 2.0
TcpClient的构造连接到服务器,采取字符串主机名和int端口,如:
TcpClient client = new TcpClient(server_ip, port);
这是工作正常时,s erver是在windows(native C++)中编译和执行的。
间歇性地,TcpClient的构造函数将返回实例,不会引发任何异常,但vxWorks中的accept调用不会返回客户端fd。 tcpstatShow表示没有接受发生。
什么可能使TcpClient构造函数(调用'Connect')返回实例,而服务器上的accept调用不返回?它似乎与系统在后台执行的操作有关 - 当服务器忙于在客户端尝试连接时将数据保存到闪存或NFS共享时,似乎更有可能出现此症状,但当它发生时也不是。
我试着调整线程运行accept的优先级
我已经看过'listen'队列的大小。够了。
文件描述符的可用的总数量应该足够(没有验证这个尚未虽然,在早晨的第一件事)
你有没有设法弄清楚这里发生了什么? – Default 2010-09-08 10:11:10
没有。 - 我有一个与WindRiver(vxworks)开放的支持请求。我做了Wireshark跟踪,当它发生时,我看到了正确的SYN和SYN,ACK,所以窗户做得对。但它从来没有出现在我们的部署目标上,这可能是一种侥幸,这就是为什么我们已经与它共存了这么久......以前的IP帧是RST,在之前的数据流中是ACK - 也许这就是问题所在,在vxworks端...端口> 1000 – paquetp 2010-09-08 17:49:26
当您使用无参数构造函数,然后调用Connect(addr,port)。它工作吗? – Kugel 2011-07-12 12:43:49