C# 如何使不同子网上的两台计算机通过套接字进行通信?

C# 如何使不同子网上的两台计算机通过套接字进行通信?,c#,objective-c,.net,sockets,client-server,C#,Objective C,.net,Sockets,Client Server,我已经用Objective C在Mac上编写了一个服务器应用程序,具有以下套接字设置- addr4.sin_len = sizeof(addr4); addr4.sin_family = AF_INET; addr4.sin_port = htons(6832); addr4.sin_addr.s_addr = htonl(INADDR_ANY); if (kCFSocketSuccess != CFSocketSetAddress(_ipv4socket, (__bridge CFDataR

我已经用Objective C在Mac上编写了一个服务器应用程序,具有以下套接字设置-

addr4.sin_len = sizeof(addr4);
addr4.sin_family = AF_INET;
addr4.sin_port = htons(6832); 
addr4.sin_addr.s_addr = htonl(INADDR_ANY);
if (kCFSocketSuccess != CFSocketSetAddress(_ipv4socket, (__bridge CFDataRef) [NSData dataWithBytes:&addr4 length:sizeof(addr4)])) {
    [self stop];
    return NO;
}
其IP=ABC.DEF.64.188,子网掩码=255.255.255.0

我的客户端是C语言,具有以下套接字设置-

IPHostEntry ipHostInfo = Dns.Resolve("ABC.DEF.64.188");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

// Create a TCP/IP socket.
 client = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);
Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . : stonybrook.edu
   Link-local IPv6 Address . . . . . : fe80::cd7d:846d:564a:3fa5%12
   IPv4 Address. . . . . . . . . . . : 172.24.17.97
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.24.16.1
Windows机器的IP地址=ABC.DEF.205.118使用What is my IP?找到?。我猜windows机器在NAT后面有以下设置-

IPHostEntry ipHostInfo = Dns.Resolve("ABC.DEF.64.188");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

// Create a TCP/IP socket.
 client = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);
Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . : stonybrook.edu
   Link-local IPv6 Address . . . . . : fe80::cd7d:846d:564a:3fa5%12
   IPv4 Address. . . . . . . . . . . : 172.24.17.97
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.24.16.1
我在客户端遇到以下错误,服务器从未看到新的传入连接-

System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 130.245.64.188:6832    at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
两台计算机上都禁用了防火墙。当两台机器位于同一子网上时,它工作正常


如何使此连接工作?

可能是端口问题;ABC.DEF.64.188正在使用端口6832,在您的设置中,但连接计算机使用的端口是什么?@I'I 6832是我在两台计算机上选择的端口号。有趣的是-如果您尝试从另一台计算机ping端口6832上的188主机,会发生什么情况?@I'L'I抱歉。我上了大学,没法让网络正常工作。我回家后会试试你的建议