C# 用vb.net套接字编程解决win7中的连接问题

C# 用vb.net套接字编程解决win7中的连接问题,c#,vb.net,sockets,tcpclient,tcplistener,C#,Vb.net,Sockets,Tcpclient,Tcplistener,我正在使用vb.net中的套接字编程来创建服务器客户端远程处理应用程序。当我在Win7框中同时使用客户端和服务器时,就会出现问题。它适用于win xp或跨平台通信,例如win xp到win 7。 以下是客户端和服务器端使用的代码: 客户: Dim ips As IPAddress() ips = Dns.GetHostAddresses(HostName) For index = 0 To ips.Length - 1 Next index =============

我正在使用vb.net中的套接字编程来创建服务器客户端远程处理应用程序。当我在Win7框中同时使用客户端和服务器时,就会出现问题。它适用于win xp或跨平台通信,例如win xp到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的权限级别吗?

< P>如果你考虑在C中这样做,你检查了开源通信框架NETWorkCuS.NET吗?试图重新发明轮子毫无意义。

以下是问题和解决方案:

问题:

Win 7附带ip v6。因此,无论何时使用Dns.GetHostAddresseshostname,它都会返回与主机ip v4和ip v6关联的所有ip地址。将此ip v6地址与用于ip v4兼容性的函数一起使用会产生问题

解决方案:

无论何时使用Dns.GetHostAddresseshostname,请检查ip v4

if (ObjTemp.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString())

希望这能对从事套接字编程的其他人有所帮助

服务器如何接受传入连接?Tcplistener正在侦听具有任何ip地址的指定端口,一旦创建tcpClient,它就会将数据发送到服务器,服务器使用添加的代码读取网络流:Dim client as tcpClient=Nothing Dim netstream as NetworkStream=Nothing If Listener.Pending Then client=Listener.AcceptTcpClientnetstream=client.getstream您是否取消了防火墙上的端口阻止?IP地址正确吗?IP地址正确,但是如何以编程方式取消阻止端口?请建议