服务器:
vxworks 6.3
调用通常的套接字、绑定(bind)、监听,然后:
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”)返回实例,而服务器上的 accept 调用不返回?这似乎与系统在后台执行的操作有关 - 当客户端尝试连接时,当服务器忙于将数据持久保存到闪存或 NFS 共享时,似乎更有可能出现此症状,但可能会在客户端尝试连接时发生也不是。
我试过调整运行 accept 的线程的优先级
我在“听”中查看了队列的大小。够了。
可用的文件描述符总数应该足够了(不过还没有验证,早上的第一件事)
最佳答案
您能否发布关于网络上发生的情况的 wireshark/netmon?
关于c# - tcp/ip 接受不返回,但客户端返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002997/