有关VB.NET socket通信断开后重连问题

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ip = Form2.TextBox1.Text
port = Form2.TextBox2.Text

If connectstate = 0 Then
socket1.Connect(iport)
Else
socket1.Shutdown(SocketShutdown.Both)
socket1.Close()
End If
If socket1.Connected = True Then
Label6.Text = "已连接" & " " & ip & ":" & port
Button1.Text = "断开"
connectstate = 1
Else
Label6.Text = "未连接"
Button1.Text = "连接"
connectstate = 0
End If
End Sub

可以连接和断开,但断开后就不可以重连了
关闭窗体再重新打开,又可以了
最新回答
地球另一端的梦

2025-03-29 04:04:05

这个很正常,因为服务器(对方)还没对客户端(本地)做Close动作。还有一个说法是本地端控件的缓存还存在着与服务器对应Handle,只是State属性状态不是sckConnected而已。继续进行测试,你也会发现只要超过60秒通信闲置,也会自动Not sckConnected。

TCP连线,可以使用Load 控件数组进行尝试连线,当控件Close后就Unload,这可以取代必须关闭窗体、重新打开连接的问题。