Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自C++;客户获得巨大价值_Java_C++_Sockets_Networking - Fatal编程技术网

Java 来自C++;客户获得巨大价值

Java 来自C++;客户获得巨大价值,java,c++,sockets,networking,Java,C++,Sockets,Networking,我怀疑这与endianness有关,但我不确定如何修复它。我有一个C++客户端告诉java服务器,它要发送多少字节,java服务器在输入流上调用读()。然后服务器开始读取其余的数据 目前,C++服务器调用: char l = '3'; BytesSent = send( Socket, &l, 1, 0 ); 那么相应的Java端是: int lBytesSent = m_InDataStream.readInt(); m_AckNack = new byte[lBytesSent]

我怀疑这与endianness有关,但我不确定如何修复它。我有一个C++客户端告诉java服务器,它要发送多少字节,java服务器在输入流上调用读()。然后服务器开始读取其余的数据

目前,C++服务器调用:

char l = '3';
BytesSent = send( Socket, &l, 1, 0 );
那么相应的Java端是:

int lBytesSent = m_InDataStream.readInt();

m_AckNack = new byte[lBytesSent];
m_InDataStream.read(m_AckNack)
字节lbytesent往往是一些巨大的值,然后在创建数组时抛出一个异常(毫不奇怪)

<> >用+/p>简单地打开C++ socket。
Socket = socket(AF_INET, SOCK_STREAM, 0);
Option = 1000;
setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *) &Option, sizeof(Option));
server.sin_family = AF_INET;
server.sin_port = htons(Port);
server.sin_addr.s_addr = INADDR_ANY;
memset(&(server.sin_zero), '\0', 8);
connect(Socket, (sockaddr*)&server, sizeof(server));
Java方面:

ServerSocket listener = new ServerSocket(port);
Socket server;
server = listener.accept();
为清晰起见,删除错误检查

任何建议都很好

非常感谢


马克

尝试在发送之前(在C++侧)运行该号码:


尝试在发送之前(在C++侧)运行该号码:

long x = htonl(42); /* x now contains 42 represented in network byte order */