发布网友 发布时间:2025-01-14 19:42
共1个回答
热心网友 时间:2025-01-14 20:38
private void Listen设备ForClients()
{
LocalDatabase eventDb = new LocalDatabase();
string eventPreStr = "设备监听线程(" + Thread.CurrentThread.ManagedThreadId.ToString() + ')';
this.listener设备.Start(); eventDb.SaveStr(eventPreStr + "启动");
while (this.isMainRun == true)
{
//blocks until a client has connected to the server
TcpClient client = this.listener设备.AcceptTcpClient();//有连接接入,
//create a thread to handle communication with connected client
Thread clientThread = new Thread(new ParameterizedThreadStart(Handle设备Comm));//应答,并启动一个线程处理
//取得来源IP
eventDb.SaveStr(eventPreStr + "接收到来自" + ((System.Net.IPEndPoint)client.Client.RemoteEndPoint).Address.ToString() + "的连接,并启动线程ID:" + clientThread.ManagedThreadId.ToString());
clientThread.Start(client);
}
}
我的程序中也是这样写的,你应该注意到
TcpClient client = this.listener设备.AcceptTcpClient();//有连接接入,
这句话是有设备连接了,才执行,而不是被跳过去,也就是说,循环是在这里等待的。
你说的网络事件通知,其实可以自己做,只不过是意义不大,现在程序框架已经这么成熟了,自己写也没什么意义。