读书人

使用Socket遇到一个有关问题 关于断

发布时间: 2012-07-01 13:15:00 作者: rapoo

使用Socket遇到一个问题 关于断开在连接

'开始监听
ServerSocket.Listen(10) : addmessage("服务端已启动,正在等待连接...")
ListenSocket = ServerSocket.Accept()
While True
Dim bytesRec As Integer = ListenSocket.Receive(Receivedata)
msg = Encoding.Unicode.GetString(Receivedata, 0, bytesRec)
addmessage("收到信息 " & msg & " " & Now)
end while

服务器端如上代码,用断点测试
ListenSocket = ServerSocket.Accept() 之后 会在 Dim bytesRec As Integer = ListenSocket.Receive(Receivedata) 处 停止,当客户端连接后 每一个命令 都会被 接收到 并显示出来 并且重新在 Dim bytesRec As Integer = ListenSocket.Receive(Receivedata) 停止,
但是 如果 我在客户端断开连接 shutdown(socketshutdown.both) 时 While True 就会疯狂的循环

我现在希望 多次断开 多次链接 该怎么处理?

[解决办法]
多次断开,多次连接,可以用UDP模式。比较方便一点。
[解决办法]
另外,你这个程序,如果不考虑多线程处理的话,只能支持1对1的对话,再多一个客户端就不行了。
[解决办法]
如果不考虑多线程多客户端连接的话在原有代码上改动一下就行了

断开后循环是因为你没有判断是否断开 ListenSocket.Connected判断一下状态再决定是否继续循环
下面是个死循环代码,客户端断开后又会重新监听...自己改一下判断服务器是否停止
while true
ServerSocket.Listen(10) : addmessage("服务端已启动,正在等待连接...")
ListenSocket = ServerSocket.Accept()
While True
Dim bytesRec As Integer = ListenSocket.Receive(Receivedata)
msg = Encoding.Unicode.GetString(Receivedata, 0, bytesRec)
addmessage("收到信息 " & msg & " " & Now)
if ListenSocket.Connected=false then
exit while
end if
end while
addmessage("客户端断开连接")
end while
[解决办法]
上面错了...应该这样
ServerSocket.Listen(10) : addmessage("服务端已启动,正在等待连接...")
while true
ListenSocket = ServerSocket.Accept()
While True
Dim bytesRec As Integer = ListenSocket.Receive(Receivedata)
msg = Encoding.Unicode.GetString(Receivedata, 0, bytesRec)
addmessage("收到信息 " & msg & " " & Now)
if ListenSocket.Connected=false then
exit while
end if
end while
addmessage("客户端断开连接")
end while

读书人网 >VB Dotnet

热点推荐