while(true)
{
if(recvfrom(sockfd,buf, sizeof(buf), 0, (struct sockaddr*)&src_addr, &len) == -1)
{
perror("receive failed\n");
return -1;
}
printf("%s----from %s:%u\n", buf, inet_ntoa(src_addr.sin_addr), ntohl(src_addr.sin_port));
}
这个是udp编程中接收端的程序的一部分,但是你会发现printf没有输出,用gdb调试,发现程序是正常跑的,这是因为shell是存在行缓冲的(每次攒够一行(出现换行符))才会输出,所以这里在printf的末尾加上\n就可以正常输出了
本文介绍了一个UDP编程中接收端程序遇到的问题:使用printf输出接收到的数据时无法显示。通过调试发现,原因是shell存在行缓冲机制,未遇到换行符不会输出。解决办法是在printf的字符串末尾添加换行符。
&spm=1001.2101.3001.5002&articleId=50432790&d=1&t=3&u=10086c18a57c4a009fcf5f1cd04ca770)
3861

被折叠的 条评论
为什么被折叠?



