Java 服务器套接字,客户端采用 C 语言

Java Server Socket with Client in C

本文关键字:语言 客户端 服务器 套接字 Java      更新时间:2023-10-16

我用java编写了服务器套接字代码。相关行是:

byte[] bRecieved = new byte[440] ;
1int i =in.read(bRecieved);
Arrays.toString(bRecieved);

如果客户端是用 java 编写的,这工作正常

 byte[] bSend = {1,2,3,4};
 DataOutputStream out =
                       new DataOutputStream(outToServer);
 out.write(bSend);

但是客户端是用C++写的。发送代码为:

if (client.connect(serverIP, serverPort)) {
   String msg="Hello Server";//Message to be sent
    client.println(msg);//send the message
}

我的问题是,我如何与想要字节的 java 服务器通信?连接成功,字节打印在服务器控制台上。但它们不是"你好服务器"。我是否必须遍历字节并将它们解释为字符?字符和 int 在 C++ 中是 1 个字节。

如有可能,请澄清这一情况。提前感谢!

您为

C++套接字使用什么库?

您可以尝试冲洗流?

默认情况下,C++客户端是行缓冲的。 这意味着它实际上不会发送数据,直到将换行符推送到出站数据上,或者保存要发送的数据的缓冲区填充超过某个点(取决于系统)。 如果您想在操作中看到它,请将msg字符串设置为 "Hello Servern" 。 您的数据应立即发送。

flush()命令说,"立即发送所有数据,无论缓冲区中有多少数据。 因此,您可以选择彼此执行,调用flush()或附加换行符。 当然,如果您使用换行符,Java 进程除了字符串之外还会收到一个换行符,这可能是您想要的,也可能不是您想要的。 通常,在执行网络操作时,您希望在向出站缓冲区添加完内容时调用flush()