我收到了一個 3rd 方 exe,它偵聽埠1234并期望數字,例如5000以換行符結尾并為其回傳輸出
但出于某種原因,例如當我發送時0它會卡住,當我重新啟動我的監聽器和這個 exe 時,我覺得我收到了以前的回復
或者我發送1它回傳,例如TRUE,當我1再次發送時它回傳FALSE,所以它似乎沒有單獨處理這些輸入,好像它不知道它是 OTHER 訊息
我想我的代碼有問題,但我不知道,因為我沒有這個 3rd 方的代碼。
我相信我處理的行尾錯誤
using System.Net;
using System.Text;
using System.Net.Sockets;
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
socket.Connect(remoteEndPoint);
while (true)
{
string s = Console.ReadLine();
byte[] byData = Encoding.ASCII.GetBytes(s "\r\n"); // I tried also \r \\r \n \\n \\r\\n
socket.Send(byData);
byte[] buffer = new byte[1024];
int length = socket.Receive(buffer);
char[] chars = new char[length];
Encoding.UTF8.GetChars(buffer, 0, length, chars, 0);
Console.WriteLine(new string(chars));
}
uj5u.com熱心網友回復:
這有點像在黑暗中尋找;但您可以嘗試附加 NULL 字符\0。
所以基本上:\n\0或\r\n\0。NULL字符有時(不)正確地用于確定字串的結尾,尤其是在較舊的類似 C 的系統中。
您可以在此處閱讀更多相關資訊:https : //en.m.wikipedia.org/wiki/Null_character
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394240.html
