socket TCP通讯时,如服务器未开,等待一段时间才会执行到catch
vb.net吧
全部回复
仅看楼主
level 5
器间程序假死,请问如何处理啊?
Try
Dim remoteEP As New IPEndPoint(Net.IPAddress.Parse(TextBox26.Text), TextBox27.Text)
cSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
cSocket.Connect(remoteEP)
Do
If cSocket.Connected = True Then
myThread = New Thread(AddressOf ReciveMsg)
myThread.Start()
tcpConnect = True
netstate = 1
Exit Do
End If
Loop Catch ex As Exception '显示错误类型
MDIParent1.ToolStripStatusLabel1.Text = ex.Message
Finally
'myThread.Abort()
netstate = 0
cSocket.Close()
End Try
2013年05月16日 03点05分 1
level 6
请用异步方法,BeginConnect或者ConnectAsync
2013年05月16日 04点05分 2
可以给找个例子吗?发个链接也行,谢谢啊,我是新手
2013年05月16日 05点05分
把链接事件放timer里
2013年05月18日 02点05分
在Socket中使用Timer做接收的,一般都会悲剧。目前真的不推荐用同步模式做IO操作,卡住的话都很蛋疼
2013年05月21日 06点05分
level 7
用Connect时候,如果服务器未开,直接会甩出异常的,程序不会进入Do循环,假死情况不是很理解.可以考虑用异步连接,比如自己开个线程连,最好是线程池的线程,也可以用ConnectAsync,不过你要设定回掉方法,跟这方法有个配套的类,详细情况去看MSDN吧
2013年05月16日 06点05分 3
level 3
程序会一直执行listen这一步,服务器没开的话,就会卡在这一步不前进了,就会导致程序卡死无响应
解决办法一般是用多线程,利用一个线程来listen,就不会导致程序无响应了
2013年05月19日 07点05分 4
level 5
程序经过测试,在别的机子上正常,只有在我机子上才会出现假死现象!
2013年05月23日 02点05分 5
1