我在服务器和客户端之间写入 2 个整数,但它们之间很困惑。客户写道:
char playerMove[3];
char oppMove[3];
write(sock, playerMove, 3);
printf("Waiting on Opponent's move.\n");
read(sock, oppMove, 3);
printf("this was Opponent's move: %s\n", oppMove);
而相关的服务器代码是
char playerMove[3];
read(socket1, playerMove, 3);
printf("First move is: %s", playerMove);
write(socket2, playerMove, 3);
终端显示客户端说
Waiting on Opponent's move.
this was Opponent's move: �D�K
但在服务器的终端中我可以清楚地看到它正确完成
First move is: 3 1
有人可以帮我吗?我是 C 语言新手。我需要做一些特殊的事情来向我的客户写“3 1”吗?
最佳答案
尝试如下所示的操作。这里缓冲区oppMove在使用之前设置为0。
char playerMove[3];
char oppMove[3];
memset(oppMove,'\0',3);
write(sock, playerMove, 3);
printf("Waiting on Opponent's move.\n");
read(sock, oppMove, 3);
printf("this was Opponent's move: %s\n", oppMove);
我还建议使用 Sourav Ghosh 指出的 4 字节长的缓冲区
关于c - 读写系统调用返回乱码 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29407244/