gpt4 book ai didi

c - 服务器会在没有 printf() 的情况下卡住,只有使用 printf() 才能正常工作, super 奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:31 25 4
gpt4 key购买 nike

我是新手,刚开始学习数据网络,关于TCP/IP、客户端和服务器。

我正在为服务器编写一个程序,试图从客户端读取数据(来自使用 scanf() 的用户输入)。但最奇怪的是:

服务器将卡在 read() 函数处。

但是,当我在 read() 函数之后放置一个 printf() 函数时,它并没有卡住!但我相信 printf() 实际上对代码运行没有任何作用。这让我发疯,我无法理解......

这里是简单的代码:

simpleChildSocket = accept(simpleSocket,(struct sockaddr *)&clientName,&clientNameLength);
if (simpleChildSocket == -1) {
fprintf(stderr, "Cannot accept connections!\n");
close(simpleSocket);
exit(1);
}

//read data
returnStatus = read(simpleChildSocket, username, sizeof(username));
printf("Received username: %s\n", username); //*That's where strange happens*

if(returnStatus > 0){
printf("Yes");
}
else{
printf("No");
close(simpleChildSocket);
}

最佳答案

问题是 if 中的 printf 不打印任何 \n,因此输出会被缓冲但不会刷新。在读取后添加 printf 确实包含 \n 这就是为什么您可以看到输出,但代码在两种情况下的行为完全相同。

print("Yes") 更改为 printf("Yes\n"),同样将 "No" 更改为 printf("Yes\n")

关于c - 服务器会在没有 printf() 的情况下卡住,只有使用 printf() 才能正常工作, super 奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com