繁体   English   中英

为什么我的程序不使用printf输出任何内容?

[英]Why is my program not outputting anything with printf?

我是一名网络编程课程的学生,我正在编写一个UDP客户端,该客户端连接到三台服务器以进行文件传输。 到目前为止,我已经使客户端与前两个服务器通信,但是该服务器的第三个副本无法正常工作。 它甚至没有打印出我放入的printf调试语句。这是怎么回事? Unix出问题了吗? 前两个服务器与该服务器完全相同,但端口/ IP地址有所变化,并且工作正常。

#include <stdlib.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <strings.h>

int main(int argc, char**argv)
{
   printf("i will destroy you");
   int o = 1;
   int sockfd,n;
   struct sockaddr_in servaddr,cliaddr;
   socklen_t len;
   char mesg[1000];

   printf("im confused");
   sockfd=socket(AF_INET,SOCK_DGRAM,0);

   bzero(&servaddr,sizeof(servaddr));
   servaddr.sin_family = AF_INET;
   servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
   servaddr.sin_port=htons(3454);
   bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
   printf("yo wtf");

   if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &o, sizeof(o)) < 0){
      perror("setsockopt failed");
      exit(0);
   }
   printf("here1");
   while(1)
   {
      len = sizeof(cliaddr);
      printf("here");
      n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);
      sendto(sockfd,mesg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
      printf("-------------------------------------------------------\n");
      mesg[n] = 0;
      printf("Received the following:\n");
      printf("%s",mesg);
      printf("-------------------------------------------------------\n");
   }
}

您可能需要将例如printf("i will destroy you")更改为printf("i will destroy you\\n") 或参见setbuf() 或使用fflush(stdout)

您不是在冲洗stdout

或者,使用stderr作为

fprintf(stderr,"My message\n");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM