我正在尝试使用线程实现具有多客户端的客户端 - 服务器应用程序。只是为了尝试,我想打印来自每个客户端的消息,但是当我从客户端发送消息时,服务器不会打印任何内容。
服务器(线程代码)
void comunicationHandler(void *socket)
{
int sock = *(int*) socket;
char msg[2000];
while ((strcmp(msg, "!quit")) != 0) {
if (recv(sock, msg, 2000, 0) < 0)
puts("Error recv");
printf("%s", msg);
}
puts("Client Disconnected\n");
}
当我发送“!quit”时,服务器进入无限循环打印消息
客户端
for(;;) {
printf("\nInserisci il msg: ");
scanf("%s", msg);
if (strcmp(msg, "!quit") == 0)
break;
write(sd, msg, 2000);
}
答案 0 :(得分:3)
您的代码存在多个问题:
答案 1 :(得分:1)
服务器进入无限循环
您希望针对recv()
测试0
的结果,并在此情况下退出。 0
表示客户端有序地关闭了连接。