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



大家好,我试图创建一个服务器,该服务器将收到类似:"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: %sn",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);
       }

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

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

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

printf("Here is the message: %sn",buffer);

等等,什么?是什么使这成为一条消息?这只是您从连接中读取的一些字节。这不是一条消息。

您需要编写一些代码来接收消息,否则您将不会收到消息,而只会收到来自连接的一堆字节。

相关内容

  • 没有找到相关文章

最新更新