是否有任何解决方案可以通过套接字发送CR(0x0D)和LF(0x0A)?
我有一些数据,如下面的char缓冲区。我想有一个解决方案,我可以发送一些二进制数据(范围应该是完整的8Bit = 0x00到0xFF)。
套接字“connectedSocket”已成功设置。
char bufSend[] = {0x01, 0x01, 0x0A, 0x04, 0x44, 0x0D, 0x12};
ret = send(connnectedSocket, bufSend, 7, 0);
if(SOCKET_ERROR == ret) {
printf("Error: send, code: %d\n", WSAGetLastError());
return 1;
}
我收到了返回消息:10053 = WSAECONNABORTED
如果我将数据更改为没有0x0A和0x0D的数据,则没有错误。
客户端用java编程:
if (socket.isConnected()) {
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// start connection
out.println(CONNECTION_BEGIN);
inMessage = in.readLine();
System.out.println("data length: " + inMessage.length());
答案 0 :(得分:0)
编写Java客户端以阅读多行。问题是Java正在关闭连接。
答案 1 :(得分:0)
您没有发送一行,您发送的二进制数据恰好包含0x0A和0x0D,但不是行终止符。所以不要读行。使用InputStream.read()
。
但是很难相信发送它真的产生了ECONNABORTED并且删除了两个字节来修复它。