gpt4 book ai didi

c++ - 从多个 C++ 套接字多次读取

转载 作者:行者123 更新时间:2023-11-28 02:54:41 25 4
gpt4 key购买 nike

我正在为剪刀石头布协议(protocol)实现一个服务器。到目前为止,一切进展顺利,只是我遇到了一个障碍,我正试图克服它。作为该计划的总体概述:

  1. 客户端连接到服务器。
  2. 第二个客户端连接到服务器。
  3. 服务器接收来自客户端1的输入。
  4. 服务器接收来自客户端2的输入。
  5. 服务器确定获胜者,然后将获胜信息发送回每个客户端。

我已将套接字包装在一个类中,以便使用更简单的 API 来处理它们。我遇到问题的部分在这里:

  char playerOneRequest;
char playerTwoRequest;
int playerOneLength = mPlayerOne->receive(&playerOneRequest,
BUFFER_SIZE);
cerr << "After player one\n";
cout << "Received '" << playerOneRequest << "' from player one.\n";
int playerTwoLength = mPlayerTwo->receive(&playerTwoRequest,
BUFFER_SIZE);
cerr << "After player two\n";
cerr << "Received '" << playerTwoRequest << "' from player two.\n";

char playerOne = toupper(playerOneRequest);
char playerTwo = toupper(playerTwoRequest);

我一直在使用 DDD 调试它,我发现了一个问题。假设玩家一发送了一个 R,玩家二发送了一个 S。在第一次接收 playerOneRequest 后是 R,在第二次接收到播放器 2(单独的 TCP 流)后,playerTwoRequest 是 S。但此时 playerOneRequest 现在等于 \r

我不明白为什么会这样。我的所有代码都在 this Gist 中可用

最佳答案

BUFFER_SIZE 是什么值?您在 playerOneRequest 中只有一个角色的空间,但您似乎可以从 receive 中读取多个角色。读取的任何其他字符都将放入相邻变量中。

关于c++ - 从多个 C++ 套接字多次读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276720/

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