私は現在、スレッド化されたネットワーク アプリケーションを開発しており (実際には 2 つですが、共通の基盤があります)、インターフェイスに nCurses を使用しています。
問題は、現在 2 つのスレッドを開始しようとしていることです。GUI スレッドはキーボードが起動するのをリッスンしており、起動するとメモリ内にメッセージを構築します。Enter キーが押されると、これがサーバー スレッドに渡され、ネットワーク経由で渡されます。
サーバー スレッドは接続をリッスンします。受信すると、ループに入ります。接続からのデータがあるかどうかを確認し、ある場合はそれを GUI スレッドに送信し、表示します。次に、GUI からのチェック、ネットワーク経由での送信などを行います。
問題は、メッセージを問題なく受信でき (この時点まで Telnet でテストしていた...)、メッセージが GUI スレッドに問題なく到達することです。printf はそれを問題なく表示しますが (ただし、printf と nCurses を混在させると汚い感じがします)、printw は問題のために改行を表示するだけです。文字に個別にアクセスすると、うまくいくようです。
char* messageRcv;
messageRcv = stream_rcv_nblock(stream);
if(messageRcv != NULL) {
if(messageRcv[0] != '\xFF') {
printw("%s", messageRcv);
refresh();
}
free(messageRcv);
}
これは、理論的にはメッセージを表示するコードです。記録として、'connection has closed' コードとして、今のところ 0xFF が機能しています。クイックで汚いですが、これは今のところ非常に初期の段階なので、気にしません。
私は何も持っていないので、この問題に関する支援をいただければ幸いです。ありがとう。
編集: printw() はフォーマット文字列「%s」を使用しますが、エラーは引き続き発生します。