сервер:
vxworks 6.3
вызывает обычный сокет, bind, listen, затем:
for (;;)
{
client = accept(sfd,NULL,NULL);
// pass client to worker thread
}
client:
.NET 2.0
Конструктор TcpClient для подключения к серверукоторый принимает строку hostname и int port, например:
TcpClient client = new TcpClient(server_ip, port);
Это нормально работает, когда сервер компилируется и выполняется в windows (native c ++).
с перерывами, конструктор для TcpClientвернет экземпляр, не выдавая никакого исключения, но вызов accept в vxWorks не возвращается с клиентом fd.tcpstatShow указывает, что принятие не произошло.
Что может заставить конструктор TcpClient (который вызывает 'Connect') возвращать экземпляр, в то время как вызов accept на сервере не возвращает?Похоже, что это связано с тем, что система делает в фоновом режиме - более вероятно, что этот симптом возникнет, когда сервер занят сохранением данных во флэш-памяти или общим ресурсом NFS, когда клиент пытается подключиться, но может произойти, когда онэто также не так.
Я попытался отрегулировать приоритет потока, выполняющего accept
Я посмотрел размер очереди в 'listen'.Достаточно.
Всего должно хватить общего числа дескрипторов файлов (пока это не подтверждено, первым делом с утра)