首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2012-07-01 
使用Socket遇到一个问题关于断开在连接开始监听ServerSocket.Listen(10) : addmessage(服务端已启动,正

使用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

热点排行