0

在本地机器上,此代码有效,但当我用于其他机器时,它不起作用。

 socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 PEndPoint localendpoint = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 6001);
            try
            {socket.Connect(localendpoint);}
            catch
            {
                Console.Write("unable");
                Main(args);
            }
            String sms = "i;want;send;data";
            byte[] data = Encoding.ASCII.GetBytes(sms);
            socket.Send(data);
            Console.Read();
            socket.Close();    }

我的服务器端:

 socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.102"),6001));
 socket.Listen(100);
 Socket acepted = socket.Accept();

实际我想配置其他机器,我用不同的 IP 使用相同的代码,但没有找到。其他机器IP是192.168.0.102 位于其他地方如何配置?

4

2 回答 2

0

只需侦听IPAddress.Any IP,服务器就会侦听对它分配的任何地址的请求。这将允许您从任何网络进行连接。

如果您只想让在同一台计算机上运行的程序能够连接,请使用IPAddress.Loopback,这将使您的套接字侦听127.0.0.1

于 2012-07-25T12:32:39.743 回答
0

使用 IPAddress.Any 可能会使您面临各种安全风险,因为您将监听您机器上的所有 NIC 卡,包括 Internet 和 Intranet 卡。而是将 IPAddress.Loopback 用于您的主 LAN NIC 卡。或者,将所需 NIC 卡的 IP 地址存储在数据库或配置文件中。

于 2012-07-25T12:50:16.580 回答