大家好,我试图创建一个服务器,该服务器将收到类似:"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);
等等,什么?是什么使这成为一条消息?这只是您从连接中读取的一些字节。这不是一条消息。
您需要编写一些代码来接收消息,否则您将不会收到消息,而只会收到来自连接的一堆字节。