怎样关闭winsock控件的listen

jenkinxu 2004-04-02 05:23:18
在用winsock控件做服务端时,当客户端与服务端断开连接后,再连接就不能连上去了。因为这个监听仍然存在。怎样去关闭这个监听呢?
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingscv 2004-04-03
  • 打赏
  • 举报
回复
你用一个winsock专门用于listen
然后动态加载winsock连接客户端
jenkinxu 2004-04-03
  • 打赏
  • 举报
回复
但用了close方法后,再进行连接时,在cmd下用netstat -an查状态,会出现很多TIME WAIT,如果我连接次数频繁的话,会不会越积越多导致死机?
是这样的:我要做个监听程序,我无法控制客户端,客户端只是有信息就跟我连接,正常情况下,我可以不关连接,对方也不关连接。一旦对方与我断开连接(close客户端),我是无法知道的。他再与我连接就不行了。所以我每次在作了一次响应后,就close,accept,这样就出现了上述情况。每次的连接都会TIME WAIT。请帮帮忙,解释一下TIME WAIT是什么含义,怎么解决的我问题!
daisy8675 2004-04-02
  • 打赏
  • 举报
回复
服務端的應用
Private Sub Form_Load()
' 使用 TCP Protocol
WskServer.Protocol = sckTCPProtocol

' 設定本 Server 的 IP Address
txtServerIP = WskServer.LocalIP
End Sub

Private Sub cmdListen_Click()
cmdListen.Enabled = False

lblServerStatus = "Listening for Connection."

' 設定本 Server 的連接 Port
WskServer.LocalPort = txtServerPort.Text

' 檢查 Winsock 是否已產生連結?
If WskServer.State <> sckConnected Then
' 若未產生連結則產生 Listen
WskServer.Listen
Else
MsgBox "Server is already connected!", vbCritical
Exit Sub
End If
End Sub

Private Sub WskServer_ConnectionRequest(ByVal requestID As Long)
' 檢查 Server Winsock 是否已產生連結?
If WskServer.State = sckConnected Then
MsgBox "Server is already connected!", vbCritical
Exit Sub
End If

WskServer.Close

' 接受來自 Client 端的 Request
WskServer.Accept requestID

lblServerStatus = "Processing Connection."

lstServerLog.AddItem Time & " - " & "Client Connected"

' 傳送訊息回 Client 端
WskServer.SendData "CLOSE"

DoEvents

WskServer.Close
cmdListen.Enabled = True
lblServerStatus = "Server Idle"
End Sub
Wat5 2004-04-02
  • 打赏
  • 举报
回复
sckServer(Index).Close

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧