C:TCP服务器没有收到整条消息

时间:2017-04-06 11:37:17

标签: c tcp server null client

大家好我试图创建一个服务器,它会收到如下信息:" str1 \ 0str2 \ 0str3 \ 0"然后在子串中分开。在客户端,一切似乎都工作正常但是当我在服务器端接收消息时,我只收到" str1"。任何帮助将不胜感激!

服务器:

   bzero(buffer,256);
   n = read( newsockfd,buffer, 255 );

   if (n < 0) {
      perror("ERROR reading from socket");
      exit(1);
   }

   printf("Here is the message: %s\n",buffer);


   for(int i = 0; i < strlen(buffer); i++){
       printf("%c", buffer[i],i);
       if ( buffer[i] == 0 ){
       printf("0");
     }
   }`

客户端:

   char buffer[256];
   int length =0;
   char *uptr = buffer;
   int i;

       strcpy(uptr,argv[3]);
       length = length + strlen(argv[3])-3;

       for ( i = 4 ; i < argc  ; i++){

          memcpy(uptr+length+i, argv[i]  ,strlen(argv[i]) +1);

          length = length + strlen(argv[i]);

       }

       buffer[length + (argc - 1)]= 0;


       for(i = 0; i < length + argc; i++){
           printf("%c", buffer[i],i);

       }

1 个答案:

答案 0 :(得分:0)

您从未编写任何代码来接收邮件。因此,您的代码没有收到消息也就不足为奇了。

  bzero(buffer,256);
  n = read( newsockfd,buffer, 255 );

这会读取一些可能是也可能不是消息的数据。毕竟,read函数不知道您的消息是什么样的。

printf("Here is the message: %s\n",buffer);
等等,什么?是什么让这个消息?这只是您从连接中读取的一些字节。这不是一条消息。

您需要编写一些代码来接收消息,否则您将无法接收消息,但只能从连接中获取大量字节。