c ++套接字发送不传输CR和LF

时间:2013-08-21 12:42:07

标签: java c++ sockets winsock

是否有任何解决方案可以通过套接字发送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());

2 个答案:

答案 0 :(得分:0)

编写Java客户端以阅读多行。问题是Java正在关闭连接。

答案 1 :(得分:0)

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

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