gpt4 book ai didi

java - 如何将字符串从 Java 服务器发送到 C++ 客户端?

转载 作者:可可西里 更新时间:2023-11-01 11:26:05 25 4
gpt4 key购买 nike

我需要将字符串从 Windows Java 服务器发送到 Linux C++ 客户端,反之亦然,但我编写的代码不起作用,我不知道为什么:

Java 服务器 Windows 上的代码发送字符串:

for(int i=0;i<message.length;i++)
{
message[i]=Byte.parseByte(num_cartella);
}
sendData(message,client);
Windows 上的

Java 服务器 代码接收数据:

client = server.accept();
InputStream ic = client.getInputStream();
BufferedReader dic = new BufferedReader( new InputStreamReader(ic) );
String id_scelta=String.valueOf(dic.readLine());
Linux 上的

C++ 客户端 代码发送数据:

if( send(sock , nCartella,(unsigned)strlen(nCartella), 0) < 0)
{
cout <<"Invio fallito"<<endl;
return 1;
}
cout << "Messaggio inviato"<<endl;

C++ 客户端Linux 上接收数据的代码:

if( recv(sock, server_reply , (unsigned)strlen(server_reply) , 0) < 0)
{
cout <<"Ricezione fallita"<<endl;
return 1;
}

cout <<"Risposta server:";
cout <<server_reply;

为什么它不起作用?套接字将成功创建,但客户端和服务器不发送和接收数据,我不知道代码的错误部分是什么

最佳答案

您遇到的问题与之前成千上万的人遇到的问题相同。实际上是两个。

第一个问题是这样发送字符串时,对方不知道字符串的长度是多少!所以你需要指明它,常用的技术是在实际字符串之前发送字符串大小。这样做时,注意字节序 - Java 是大端字节序,而变化是,你的另一端是小端字节序。

第二个问题是您不能希望通过单个 recv 命令一次性接收所有内容。你必须循环接收,直到你读完所有内容。

关于java - 如何将字符串从 Java 服务器发送到 C++ 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703832/

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