大家好我试图创建一个服务器,它会收到如下信息:" 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);
}
答案 0 :(得分:0)
您从未编写任何代码来接收邮件。因此,您的代码没有收到消息也就不足为奇了。
bzero(buffer,256);
n = read( newsockfd,buffer, 255 );
这会读取一些可能是也可能不是消息的数据。毕竟,read
函数不知道您的消息是什么样的。
printf("Here is the message: %s\n",buffer);
等等,什么?是什么让这个消息?这只是您从连接中读取的一些字节。这不是一条消息。
您需要编写一些代码来接收消息,否则您将无法接收消息,但只能从连接中获取大量字节。