0

私は 2 台の m/c A と B を使用しています。どちらも同じ vxworks イメージとハードウェアを持っています。しかし、唯一の変更はアプリケーションです。M/c A がサーバーで、M/c B がクライアントであるとします。イーサネット クライアント M/c を介した通信では、データを送信できません。send() がスタックし、タスクの状態が保留になります。

wState = send(vstCCEUSerSocket.wCCEUAcceptFD,(char* )vstCCEUAppTask.rgubyCCEUTxPkt,sizeof(vstCCEUAppTask.rgubyCCEUTxPkt),0);
/*logMsg("\nTrmtd = %d\t",wState);*/ 
if(wState == ERROR) 
{ 
   perror("write"); 
   Close the Fd
}
4

1 に答える 1

0

VxWorks OS ライブラリ API リファレンスから

ページ 497/498 で connect() に関する情報を見つけることができますが、connectWithTimeout() もあります。

ページ 1203/1204 には、TCP ソケットに関する興味深い項目がいくつかあるかもしれません。たとえば、KEEP_ALIVE

短い接続時間に依存していて、制御を維持したい場合は、connectWithTimeout とキープアライブを組み合わせることができます。

古いコードを思い出して、自分のプロジェクトでこれをどのように解決したかを確認するには、さらに 1 日かかることがあります。

VxWorks 5.5 ネットワーク プログラマー ガイド - ストリーム ソケット

于 2012-05-22T07:16:31.327 に答える