サーバー:
vxworks 6.3
は通常のソケット、バインド、リッスンを呼び出し、次に:
for (;;)
{
client = accept(sfd,NULL,NULL);
// pass client to worker thread
}
client:サーバーに接続するための
.NET 2.0
TcpClient コンストラクター。次のように、文字列ホスト名と int ポートを使用します。
TcpClient client = new TcpClient(server_ip, port);
これは、サーバーが Windows (ネイティブ C++) でコンパイルおよび実行されている場合に正常に機能します。
断続的に、TcpClient のコンストラクターは例外をスローせずにインスタンスを返しますが、vxWorks の受け入れ呼び出しはクライアント fd を返しません。tcpstatShow は、受け入れが発生しなかったことを示します。
TcpClient コンストラクター (「Connect」を呼び出す) がインスタンスを返す可能性があるのに、サーバーでの accept 呼び出しが返されないのはなぜでしょうか? これは、システムがバックグラウンドで実行していることに関連しているようです。クライアントが接続を試みたときに、サーバーがフラッシュまたは NFS 共有にデータを永続化するためにビジーである場合に、この症状が発生する可能性が高くなります。もありません。
私は受け入れを実行しているスレッドの優先度を調整しようとし
ました。「リッスン」でキューのサイズを調べました。十分です。
利用可能なファイル記述子の総数は十分なはずです(ただし、これはまだ検証されていません。朝一番に)