遍历IP,创建TcpClient并与TcpListener尝试连接,为什么后来会连接会很慢?
我用socket做了一个S/C程序,想让client端通过遍历内网所有IP来查找server,然后建立连接,我的想法是这样实现:
For t As Integer = 0 To 255
Dim strIP As String = "10.167.5. " & t
try
Dim tcpClient as New TcpClient(strIP, nPort)
Console.WriteLine( "Find Server: " & strIP)
Exit For
Catch ex As Exception
Console.WriteLine( "Checked IP: " & strIP)
End Try
Next
如果strIP不是server所在的IP,new TcpClient行代码就会抛出异常,算是检查完一个IP。
不知道为什么,在循环中,new TcpClient那一行代码的执行速度第一次很快,可是后来越来越慢,基本上到第十次执行就要花上10秒钟以上,实在令人发指!
我这方面的知识很少,搞不清真正的原因,希望大家指点迷津,或者换一种方法来达到相同目的,谢谢啊~~~
server处理连接请求的代码是这样的:
m_tcpListener = New TcpListener(IPAddress.Parse(m_strHostIP), m_nPort)
m_tcpListener.Start()
m_bListening = True
While (m_bListening)
If m_tcpListener.Pending Then
m_sktClient = m_tcpListener.AcceptSocket
' ... ...
Else
Thread.Sleep(100)
End If
End While
[解决办法]
天啊,效率啊,你可以用基于udp协议的socket发送局域网广播,服务端主动的发送连接信息,再用udpclient接受,这样你不就可以知道主机的参数了吗~~~