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就可以正常输出了