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 カードをリッスンするため、あらゆる種類のセキュリティ リスクにさらされる可能性があります。代わりに、プライマリ LAN NIC カードに IPAddress.Loopback を使用してください。または、目的の NIC カードの IP アドレスをデータベースまたは構成ファイルに保存します。

于 2012-07-25T12:50:16.580 に答える