【发布时间】:2022-01-25 20:28:18
【问题描述】:
我收到了一个第 3 方 exe,它在端口 1234 上侦听并期望编号,例如 5000 以换行符结尾并为其返回输出
但由于某种原因,例如当我只发送 0 时它会卡住,当我重新启动我的监听器和这个 exe 时,我觉得我收到了以前的回复
或者我发送1它返回例如TRUE,当我再次发送1然后它返回FALSE,所以它似乎没有单独处理这些输入,好像没有意识到它成为其他消息
我猜我的代码有问题,但我不知道,因为我没有这个第 3 方的代码。
我相信我处理错误的行尾
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));
}
【问题讨论】:
-
好像是
"\r\n\0",谢谢