是否有任何解決方案通過套接字發送CR(0x0D)和LF(0x0A)?
我有一些像下面的字符緩衝區的數據。我想有一個解決方案,我可以發送一些二進制數據(範圍應該是完整的8Bit = 0x00到0xFF)。
套接字「connectedSocket」已成功設置。c + +套接字發送不傳輸CR和LF
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());
如果發送二進制數據,那麼你可能不希望使用'InputStreamReader'和'readLine'是因爲這些從根本上面向文本的界面。 –
我同意查爾斯。你的用例表明你會更傾向於使用一個簡單的'read(byte [])'。一個'InputStreamReader'看起來並不合適,因爲它的定義是一個「從字節流到字符流的橋樑」(來自Sun的文檔)以及您自己聲稱的使用要求,而不是您想要的。 – WhozCraig
'socket.isConnected()'測試是多餘的。如果它沒有連接,你會得到一個'ConnectException,'或者當你試圖獲取流時你會得到一個異常。 – EJP