C ++服务器和Java客户端聊天

时间:2016-09-11 14:40:15

标签: java c++ server client chat

我用c ++服务器和java客户端编写聊天程序。

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

Age a1 {32};
Age a2 {40};
cout << "Combined ages: " << a1 + a1;
Age a3 = a1 * 2;
// ...etc. etc.

负责向服务器发送消息的函数thar的代码只是:

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

其中ps是打印流。

当我向服务器发送消息时,请说&#34; hello world&#34; c ++服务器打印: &#34;客户:hello worldClient&#34;。

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

1 个答案:

答案 0 :(得分:2)

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

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

此外,请注意:

  • 使用基于套接字的通信,无法保证服务器端的一个read()将对应于客户端上的一个println()。因此,对于较长的消息,您将有可能分批收到它。在输出中,您将在消息文本中看到几个“客户端”。
  • 发送的on the java side行分隔符可能未必对应于服务器端预期的line separator,如果您正在跨平台工作,则可能会发生这种情况。