2009-04-04 18 views
0

UDP接続を介してデータグラムを受信するために、UDPClientタイプのオブジェクトを作成しました。 Udp接続を使用してデータグラムを受信する

receivedNotificationSock = new UdpClient(); 

は、しかし、一度行われ、受信方法の使用に関する:

receivedHostNameBuffer=receivedNotificationSock.Receive(ref receivedNotificationIP); 

は私がbindメソッドを呼び出す必要がありますという例外を取得しています。 しかし、UDPClientクラスにはバインドメソッドはありません。 可能であれば、この例外を克服するために何をすべきかに関するコードを私に提供してください。

答えて

1

あなたはソケットについてもっと知る必要があります。

すべてのソケットにポート番号が割り当てられています。最初に、ソケットを作成します。これはほとんど無意味です。ちょうどそこに浮かぶ。しかし、あなたはそれをバインドします - あなたはそれにポート番号を割り当てます。 これは便利です - これでデータを送受信できます。

すべてのUDP通信は、送信元のIPとポート、宛先のIPとポートのクワッドデータセットによって定義されることに注意してください。新しく作成されたソケットにはIPアドレスまたはポートはありません。バインディングはIPアドレスとポートを与えます。

残念ながら、私はC#プログラマーではないので、あなたの質問に正しく答えることができません。しかし少なくともあなたはを知っていますなぜそれが重要です。

+0

udp接続を使用しているときにバインディングエラーが発生しています...できることを手伝ってください – saurabh

0

ソケットのプラマミングでは、クライアント側とサーバー側で行う必要があるシステムコールのシーケンスを知る必要があります。

あなたはクライアント足すされている場合:

  1. をあなたはsocketコールでソケットを開きます。あなたはその後、一度接続connectコール

  2. とサーバポートに接続し

  3. 成功し、その後、あなたはsendまたはsendtoまたはwrite

  4. のいずれかを使用してサーバーにリクエストを送信します
  5. receiveまたはread

  6. を使用して読み取ることができるデータが受信されますあなたは port

  7. 開始へsocket

  8. bindそれはlistenを使用して、さまざまなクライアントからの着信接続用のソケットにリスニング作成

    1. サーバー側で

    selectシステムコールでも、接続をリッスンする方法はブロックされていません。あなたは、本質的に要求を読んで、それの処理を開始することができ、接続を確立すると

ここでは、役に立つ可能性のあるC#の例を示します。

http://www.developerfusion.com/article/3918/socket-programming-in-c-part-1/

1

あなたのUDPクライアントのコンストラクタにポート番号を渡します。あなたが最初にあなたのdevのマシン上でこれを実行すると

receivedNotificationSock = new UdpClient(21000); 

あなたはポップアップウィンドウが正常に開きますが、バインドを許可するようにファイアウォールの設定を変更する必要があります。