DOBON.NETプログラミング掲示板過去ログ
C#でUDP経由でデータを受信する方法
題名: C#でUDP経由でデータを受信する方法
著者: マルコ
日時: 2007/08/12 16:43:42
ID: 20259
この記事の返信元:
(なし)
この記事への返信:
[20292]
Re[1]: C#でUDP経由でデータを受信する方法
YAS
2007/08/18 19:05:37
ツリーを表示
環境/言語:[C#2005]
分類:[.NET]
はじめましてC#初心者のマルコと申します。
現在UDP経由でデータを送信・受信するプログラムをC#2005で作成しております。
UDP経由で0x61を送信すると、クライアントから8ビットの値(0x00〜0xFF)が返るので、それをMessageBoxにて表示したいと思っています。
UdpClientクラスを使って送信は問題なくできました。ボタンのクリックイベントにコードを記述して下記のコードでSendData配列の内容を送信しました。
udpClient.Send(SendData, SendData.Length);
ところが、下記のコードで受信を待機すると、うまく受信できていないのかソフトウエアが停止してしまいます。
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
MessageBox.Show(returnData.ToString());
VB6の時は、UDP経由でデータを受信すると、WinsockコントロールのDataArrivalイベントが発生して、その中で処理を記述しましたが、C#の場合どのようにしたらよいのでしょうか。
質問させていただきたい点は下記のことです。
1、"private void button2_Click"でUDP経由でデータを送信して、それに対してクライアントからデータが返ってくる場合、udpClient.Receiveは、同じ"private void button2_Click"の中に書いていいのでしょうか。
2、ホスト側のイベントにかかわらず突然クライアントから送られてくるデータを受信するためには、どのようにしたらよいのでしょうか。
以上、お教えいただければ幸いです。
よろしくお願いいたします。
特にボタンクリックイベントなど使用せずに、いつクライアント側から
題名: Re[1]: C#でUDP経由でデータを受信する方法
著者: YAS
日時: 2007/08/18 19:05:37
ID: 20292
この記事の返信元:
[20259]
C#でUDP経由でデータを受信する方法
マルコ
2007/08/12 16:43:42
この記事への返信:
(なし)
ツリーを表示
UDPの受信はマルチスレッドで,受信をポーリングします。
ポーリングを終了するときには,Udp.Close()することにより,例外で受信スレッドを終了させます。
マルチキャストの例ですが,UDPを使ったサンプルプログラムを作成したので参考にしてください。(ただし,エラー処理などはかなり適当です。)
http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2007/08/udp_80bb.html
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
はじめましてC#初心者のマルコと申します。
現在UDP経由でデータを送信・受信するプログラムをC#2005で作成しております。
UDP経由で0x61を送信すると、クライアントから8ビットの値(0x00〜0xFF)が返るので、それをMessageBoxにて表示したいと思っています。
UdpClientクラスを使って送信は問題なくできました。ボタンのクリックイベントにコードを記述して下記のコードでSendData配列の内容を送信しました。
udpClient.Send(SendData, SendData.Length);
ところが、下記のコードで受信を待機すると、うまく受信できていないのかソフトウエアが停止してしまいます。
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
MessageBox.Show(returnData.ToString());
VB6の時は、UDP経由でデータを受信すると、WinsockコントロールのDataArrivalイベントが発生して、その中で処理を記述しましたが、C#の場合どのようにしたらよいのでしょうか。
質問させていただきたい点は下記のことです。
1、"private void button2_Click"でUDP経由でデータを送信して、それに対してクライアントからデータが返ってくる場合、udpClient.Receiveは、同じ"private void button2_Click"の中に書いていいのでしょうか。
2、ホスト側のイベントにかかわらず突然クライアントから送られてくるデータを受信するためには、どのようにしたらよいのでしょうか。
以上、お教えいただければ幸いです。
よろしくお願いいたします。
特にボタンクリックイベントなど使用せずに、いつクライアント側から