gpt4 book ai didi

c++ - C 套接字 : Echo server bad reply

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:40 25 4
gpt4 key购买 nike

我已经阅读了尽可能多的问题,但我仍然有问题....

我有一个非常示例的客户端/服务器套接字:

  • 在服务器和客户端之间建立连接完成
  • 从客户端接收消息完成
  • 在服务器端打印消息 DONE
  • 将消息从服​​务器发送回客户端问题
  • 在客户端打印服务器回复问题

我将消息从客户端发送到服务器没有问题,但是当我发回消息时我总是收到奇怪的字符

注意:我将'\0'字符添加到接收到的字符串中

客户端代码

//... socket initialization and other code
write(sockfd, msg, strlen(msg));
printf("Message sent ! \n");

// Listen for reply
listen(sockfd, 5);
struct_size = sizeof(con_addr);
serverfd = accept(sockfd, (struct sockaddr*)&con_addr, &struct_size);

// Read message
bytes_read = read(serverfd, server_reply, 100);
server_reply[bytes_read] = '\0';
printf("Server response: %s \n", server_reply);

// Close socket
close(sockfd);
close(serverfd);
printf("Socket closed ! \n");

服务器代码

//... socket initialization, bind and other code
struct_size = sizeof(con_addr);
if( (clientfd = accept(sockfd, (struct sockaddr*)&con_addr, &struct_size)) < 0 ){
perror("Could not accept connection. Error: ");
return 1;
}

// Read message
bytes_read = read(clientfd, client_message, 100);
client_message[bytes_read] = '\0';

printf("Message received: %s \n", client_message);
// Send message back
n = write(clientfd, client_message , strlen(client_message));

我得到这样的东西:

Server response: �V��i�8�y�
Server response: ��ƿi�8�{�

最佳答案

您对 TCP 套接字的工作方式感到困惑:

目前您正在尝试连接/接受双方。

其他说明:

  • 始终检查系统调用的返回值 - -1 表示错误,然后检查 errno(3)对于实际问题(strerror(3) 在这里很有用)。
  • 不要假设数据是 ASCII,所以不要使用 strlen(3)在套接字输入上,使用 read(2) 的返回值.

关于c++ - C 套接字 : Echo server bad reply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com