C语言中带有客户端的Java服务器套接字

C语言中带有客户端的Java服务器套接字,java,c++,sockets,Java,C++,Sockets,我已经用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

我已经用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服务器通信?连接成功,并在服务器控制台上打印字节。但它们不是Hello服务器。我必须遍历字节并将它们解释为字符吗?CARS和INT是C++中的1字节。p> 如果可能,请澄清这种情况。
提前谢谢

>你在C++的套接字中使用什么库?< /P>

你可以尝试刷新流吗?< /P> < P>默认情况下,C++客户端是行缓冲的。这意味着它实际上不会发送数据,直到新行被推到出站数据上,或者保存要发送的数据的缓冲区填充到某个特定的点(依赖于系统)之外。如果要查看此操作,请将消息字符串设置为Hello Server\n。您的数据应该立即发送


flush命令说,现在发送所有数据,不管缓冲区中有多少数据。所以你可以选择一个接一个,要么调用flush,要么追加一个换行符。当然,如果使用换行符,Java进程将在字符串之外接收换行符,这可能是您想要的,也可能不是您想要的。一般来说,在执行网络操作时,每当您将输出添加到出站缓冲区时,都希望调用FULSH。C++程序需要刷新其缓冲区。读取有关行缓冲和刷新的信息,并且int不是C++中的一个字节。它实际上是平台特定的,尽管几乎所有你可能要触摸的东西都有int为4字节。C++中的字符串hello server \n将被显示为字节[] { h’,e’…}或字符的ASCII表示。C++代码应该只为包含\n字节的字符串发送ASCII字符。