TCP/IP客户端连接问题
问题描述:
我在使用tcp客户端时遇到问题。当客户端开始他们的表单时,他们向我发送一个client.connect请求,当我打开我的表单时,我接受传入的请求,因此我们都连接并显示连接,但是当我关闭客户端表单时它仍然显示我们即使我们不是。TCP/IP客户端连接问题
Dim Listener As New TcpListener(4355)
Dim Client As New TcpClient
Dim Message As String
Private Sub Listen()
Try
Listener.Start()
Catch ex As Exception
End Try
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
Control.CheckForIllegalCrossThreadCalls = False
'IP.Text = My.Settings.IP
Try
Dim Listening As New Thread(New ThreadStart(AddressOf Listen))
Listening.Start()
Catch ex As Exception
Application.Restart()
End Try
Sending1.Focus()
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles
Timer2.Tick
If Client.Connected = False Then
Label5.Text = "Disconnected"
Label5.ForeColor = Color.Red
Sending1.Enabled = False
Client = Listener.AcceptTcpClient() 'looping accept request
End If
If Client.Connected = True Then
Label5.Text = "Connected"
Label5.ForeColor = Color.Green
Sending1.Enabled = True
End If
End Sub
答
您可以使用ElseIf
。
If Client.Connected = False Then
Label5.Text = "Disconnected"
Label5.ForeColor = Color.Red
Sending1.Enabled = False
Client = Listener.AcceptTcpClient()
ElseIf Client.Connected = True Then
Label5.Text = "Connected"
Label5.ForeColor = Color.Green
Sending1.Enabled = True
End If
希望它能帮助:)
+0
它没有区别。 OP没有给我们足够的代码来识别问题。 –
+0
已更新,对此感到遗憾。 – alan7811
太少代码为我们能够重现,或发现任何问题。开始:此代码位于何处?在一个按钮?计时器?线?其他?请更新您的问题,以包含我们重现问题所需的最低代码。有关指导,请参阅[如何创建最小,完整和可验证示例](https://stackoverflow.com/help/mcve)。 –
已更新,对此表示抱歉 – alan7811
我看到您仍在使用Control.CheckForIllegalCrossThreadCalls = False。您_ **迫切** _需要摆脱这一点,并做[**适当的线程安全调用**](https://stackoverflow.com/documentation/vb.net/1913/threading/6235/performing-而是使用线程安全调用使用控制调用)。我不是这样说的,因为这是做这件事的最好方式,我这样说是因为_ **你必须!** _ –