1

有没有办法通过socket发送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());
4

2 回答 2

1

您不是在发送线路,而是在发送恰好包含 0x0A 和 0x0D 的二进制数据,但不是作为线路终止符。所以不要读行。使用InputStream.read().

但是很难相信发送这个真的产生了 ECONNABORTED 并且删除了两个字节修复了它。

于 2013-08-22T02:02:14.870 回答
0

编写您的 Java 客户端以读取超过一行。问题是 Java 正在关闭连接。

于 2013-08-21T12:45:11.617 回答