gpt4 book ai didi

vb.net - TCP/IP 检测监听器上是否有当前连接的客户端

转载 作者:可可西里 更新时间:2023-11-01 02:54:13 30 4
gpt4 key购买 nike

我的 TCP/IP 监听器有什么方法可以检测当前是否有连接的客户端?

这是我的代码:

Public Sub StopListen()
client.Close()
tcpClientThread.Abort()
server.Stop()
SyncLock accessLock
endThread = True
End SyncLock
Btn_Listen.Text = "Listen"
End Sub

该代码中的问题是,每当用户按下 Stop Listen 按钮并且当前没有任何人连接到我的监听器时,就会发生错误。

我怎样才能做这样的事情?

Public Sub StopListen()
If thereIsConnectedClient Then
client.Close()
End If

tcpClientThread.Abort()
server.Stop()
SyncLock accessLock
endThread = True
End SyncLock
Btn_Listen.Text = "Listen"
End Sub

最佳答案

一般来说,SYNC-SYNC,ACK-ACK三次握手后,连接建立,TcpListener返回一个tcpClient。这个 tcpClient 可以保存在一个数组中。该数组中的元素数表示连接数。

正常情况下,server和client交换数据包后,server或者client都会发起一个FIN请求。在 FIN-ACK、FIN-ACK 标志交换后,连接完成,tcpClient 可以从数组中删除。

现在如果有客户端没有主动关闭套接字,那么服务器可能需要一种机制来断开不活动的套接字。要么通过连接超时。或者定期发送一些空数据包并等待来自远程客户端的ACK来决定客户端是否仍然存在。

关于vb.net - TCP/IP 检测监听器上是否有当前连接的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com