簡體   English   中英

C ++套接字發送不發送CR和LF

[英]c++ socket send don't transmit CR and LF

有什么解決方案可以通過套接字發送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());

編寫Java客戶端以讀取一行以上的內容。 問題是Java正在關閉連接。

您不是在發送行,而是在發送二進制數據,該數據恰好包含0x0A和0x0D,但不作為行終止符。 所以不要讀行。 使用InputStream.read()

但是很難相信發送此消息確實可以產生ECONNABORTED,並且刪除兩個字節可以修復該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM