使用vb.net套接字编程在win7中连接问题

时间:2012-01-02 14:11:47

标签: c# vb.net sockets tcpclient tcplistener

我在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的权限级别吗?

2 个答案:

答案 0 :(得分:0)

如果您考虑在c#中执行此操作,您是否已检查过开源通信框架networkComms.net?试图重新发明轮子毫无意义。

答案 1 :(得分:0)

以下是问题及其解决方案:

  1. <强>问题:

    Win 7附带ip v6。因此,每当我们使用Dns.GetHostAddresses(主机名)时,它都会返回与主机关联的所有IP地址(ip v4和ip v6)。使用此ip v6地址与ip v4兼容性功能创建了问题。

  2. 解决方案:

    每当使用Dns.GetHostAddresses(主机名)时,请检查ip v4。

    if (ObjTemp.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString())
    
  3. 希望这会有助于其他从事套接字编程的人。 :)