java - C++ 服务器和 java 客户端聊天

标签 java c++ server client chat

<分区>

;)

我用 C++ 服务器和 Java 客户端编写了一个聊天程序。

负责从客户端接收消息的函数代码是:

void *recieve(void* *v)
{
    while (true)
    {
        bzero(buffer, 256);
        n = read(socketfd, buffer, 256);
        if (n < 0)
            exit(1);
        printf("Client: %s", buffer);
    }
}

负责向服务器发送消息的函数代码如下:

ps.println(msg);

其中 ps 是打印流。

当我向服务器发送消息时,说“hello world”,C++ 服务器打印: “客户端:你好 worldClient”。

如果有人能帮助我,我将不胜感激。 (如果我的英语不好,我深表歉意) 谢谢!

最佳答案

read()函数到达文件末尾时将返回 0。

因此在您的情况下,第一个循环迭代接收 "Hello world",然后还有一个迭代,除了 read() 返回之外什么也接收不到0. 因此“Client :”显示为空字符串。

此外,请注意:

  • 对于基于套接字的通信,不能保证服务器端的一个read() 将对应于客户端的一个println()。因此,对于较长的消息,您将面临分段接收的风险。在输出中,您会在消息文本中看到几个“客户端”。
  • 发送行分隔符on the java side可能不一定对应于 line separator预期在服务器端,如果您正在跨平台工作,则预期。

关于java - C++ 服务器和 java 客户端聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437199/

相关文章:

java - 在 Spring MVC 中创建的模型对象到底在哪里?

java - 在运行时获取列表对象的类型

c++遍历列表以调用某个函数

C++ vector 随机洗牌它的一部分

c#- HTTPS 代理

c# - Blazor组件初始化时初始加载数据;页面更新时不要再次触发该查询

php - 在 PHP 中获取 Web 服务器版本

java - 如何将 Button 对齐到 LinearLayout 中的最右角?

java - 解决 java.lang.StackOverflowError 内存问题

c++ - 如何可靠地强制对对象的方法进行虚拟调度?