2011-12-03 27 views
1

私はチャットプログラムを作成しています。私はMSNと他のチャットの仕組みについて少し混乱していると思いますか?現在、私はlocalhostのIPアドレスを入れているだけで、自分自身に接続しています。私はクライアントとサーバーのプログラムをやりとりすることができます。私の質問は、私はIPアドレスのユーザーを求めることができない方法はありますか?また、両方のプログラムを接続したいポート番号を手動で入力します。これも避ける方法はありますか?IPアドレスとポート番号C#

私は多くの場合、ユーザーにユーザー名とパスワードを要求します。

研究のビットの後、私は、次のを知って来た:

IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

しかし、コードの行は、上記のすべてのマシンのIPアドレスを返します。どのようなものを使用するのか、どうすればわかりますか?

私はIPアドレスについて知っているわけではないので、背景情報やヘルプはすばらしいと思います。

答えて

2

チャットプログラムは、サーバーを使用してクライアントを検索します。ログインすると、このサーバーに接続してIPアドレスを渡します。同時に、他のクライアントのアドレスを取得します。

これは2マイルの図であるが、私は、これはあなたがあなたのアプリケーションでDNSまたはホスト名を使用することができます

知るために必要なものですね。あなたは少し混乱しているようだ

var ips = System.Net.Dns.GetHostEntry(hostName); 
       for (var i = 0; i <= ips.AddressList.Length - 1; i++) 
       { 
        if (ips.AddressList[i].AddressFamily == AddressFamily.InterNetwork) 
         return ips.AddressList[i].ToString(); 
       } 
+1

お返事ありがとうございます。さて、クライアントにそのマシンの特定のIPアドレスを知らせて、サーバに渡すにはどうすればいいですか?どのように私はこの価値を得るだろうか? – BigBug

+0

@BlueMonster私の編集を参照してください – katit

+0

実際にはこれはNATのおかげでどのように動作するのですか? – TomTom

0

、多分これはあなたのためにそれをクリアします:PCのDNS名を取得するには

:お使いのPCのIPアドレスの使用を取得するには

System.Net.Dns.GetHostName() 

をこのような何か。サーバは、何らかの形でIPを知っておく必要がある唯一のサーバです(通常、chat.mydomain.comなどのDNS名を使用して決定されます)。クライアントがそのIPアドレスを取得すると、クライアントはサーバーに接続します。クライアントは、接続するためにそのIPを知る必要はありません。これは自動的に決定され、あなたのコントロールを超えています。クライアントが正常に接続されると、ユーザー名とパスワードなどの送信を開始できます。

0

現在、私はlocalhostのIPアドレスを入力しています。自分自身に接続しています。私は 私のクライアントとサーバープログラムが前後に通信することができます。私の質問は、私は のIPアドレスをユーザに聞くことができない方法があるのですか?

チャットソフトウェアは、中央のKNOWNサーバーを通じてすべてのトラフィックを実行することで動作します。だから、あなたは自分が入力したサーバ(IRC)またはハードコードされたサーバ(MSN)に接続するウェブサイトにチャットプログラムを置く必要があります。最初の部分では、いいえ、ユーザーは接続先を決める必要があります.2番目の値はハードコーディングされているので、やり方を尋ねると、スマートに見えなくなります。これは基本的なプログラミングです。

これはばかばかしいアプローチなので、あなたのIPアドレスを知ることはできません。あなたのIPはほとんどの場合到達可能ではありません。ほとんどの人はNATデバイスの背後にあるため、コンピュータからインターネットに簡単にアクセスできないため、CLIENTがサーバーに常に接続し、サーバーはこの接続を使用してクライアントにデータを送信します。

関連する問題