我目前正在开发一个线程网络应用程序(实际上是两个,但有一个共同的基础),并且正在使用 nCurses 作为接口。
问题是,目前我正在尝试启动两个线程;GUI 线程正在监听键盘的触发,当它触发时,将在内存中建立一条消息。当按下回车键时,它被传递给服务器线程,服务器线程通过网络传递它。
服务器线程侦听连接。当它收到一个时,它进入一个循环;查看连接中是否有任何数据,如果有,将其发送到 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);
}
这是理论上应该显示消息的代码。作为记录,0xFF 目前正在充当“连接已关闭”代码。又快又脏,但现在还很早,所以我不在乎。
任何有关此问题的帮助将不胜感激,因为我一无所有。谢谢。
编辑: printw() 使用格式字符串“%s”,但错误仍然存在。