我在vb.net中使用套接字编程来创建服务器客户端远程处理应用程序。当我在win 7框中同时使用客户端和服务器时,会出现问题。它适用于win xp或跨平台通信(例如win xp to win 7)。 以下是客户端和服务器端使用的代码:
客户端:
Dim ips As IPAddress()
ips = Dns.GetHostAddresses(HostName)
For index = 0 To ips.Length - 1
Next index
=============================================== ============
private sub sendFile(byval ip as string)
Dim client As TcpClient = Nothing client = New TcpClient(ips(index).ToString, 8000)
'Code to send file
End sub
服务器:
Dim Listener As TcpListener = Nothing
Listener = New TcpListener(IPAddress.Any, 8000)
Listener.Start()
Dim client As TcpClient = Nothing
Dim netstream As NetworkStream = Nothing
If Listener.Pending() Then
client = Listener.AcceptTcpClient()
netstream = client.GetStream()
在win 7上运行客户端和服务器时,会抛出以下错误:
连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败
请帮我弄清问题是什么。它是赢得7的权限级别吗?
答案 0 :(得分:0)
如果您考虑在c#中执行此操作,您是否已检查过开源通信框架networkComms.net?试图重新发明轮子毫无意义。
答案 1 :(得分:0)
以下是问题及其解决方案:
<强>问题:强>
Win 7附带ip v6。因此,每当我们使用Dns.GetHostAddresses(主机名)时,它都会返回与主机关联的所有IP地址(ip v4和ip v6)。使用此ip v6地址与ip v4兼容性功能创建了问题。
解决方案:
每当使用Dns.GetHostAddresses(主机名)时,请检查ip v4。
if (ObjTemp.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString())
希望这会有助于其他从事套接字编程的人。 :)