TcpClient - 在回调时从客户端接收多条消息
TcpClient - receive multiple messages from client on callback
我正在尝试创建一个 TCP 侦听器,它接收客户端,使它们保持打开状态,并在它们发送数据时调用回调方法。
我似乎无法找到如何添加回调以及如何保持客户端打开。
我当前的代码如下所示:
protected void Listener()
{
TcpListener __Listener = new TcpListener(System.Net.IPAddress.Any, Port);
__Listener.Start();
long _TicketNo = 0;
while (IsRunning)
{
client = __Listener.AcceptTcpClient();
_TicketNo++;
RFIDReaderCommunication work = new RFIDReaderCommunication(client);
Trigger(work.process());
System.Threading.Thread.Sleep(100);
}
}
work.process() 只是从网络流中读取字节。
但这只从客户端接收数据一次。
谁能告诉我如何从这个单一连接多次接收数据?
你的循环中有 client = __Listener.AcceptTcpClient();
。这意味着一旦循环回到顶部,您就会阻塞等待下一个传入连接,然后覆盖您的 client
变量。
首先,将此行移到循环上方。
我正在尝试创建一个 TCP 侦听器,它接收客户端,使它们保持打开状态,并在它们发送数据时调用回调方法。 我似乎无法找到如何添加回调以及如何保持客户端打开。
我当前的代码如下所示:
protected void Listener()
{
TcpListener __Listener = new TcpListener(System.Net.IPAddress.Any, Port);
__Listener.Start();
long _TicketNo = 0;
while (IsRunning)
{
client = __Listener.AcceptTcpClient();
_TicketNo++;
RFIDReaderCommunication work = new RFIDReaderCommunication(client);
Trigger(work.process());
System.Threading.Thread.Sleep(100);
}
}
work.process() 只是从网络流中读取字节。
但这只从客户端接收数据一次。 谁能告诉我如何从这个单一连接多次接收数据?
你的循环中有 client = __Listener.AcceptTcpClient();
。这意味着一旦循环回到顶部,您就会阻塞等待下一个传入连接,然后覆盖您的 client
变量。
首先,将此行移到循环上方。