• 締切済み

C#でUDP通信

C#でネットワークプログラミングを行いたいと思っています。 使用するプロトコルはUDPです。 TCP通信の参考書やwebページは見掛けるのですが UDPに関する資料はなかなか見つけることができません。 コーディングする上で、 TCP通信のプログラムをどのように変えたらよいのか 教えてください。 ちなみに、Windowsで開発する場合は WINSOCKを使ったほうがよろしいのでしょうか。

  • ru-k
  • お礼率33% (5/15)

みんなの回答

  • dj702e
  • ベストアンサー率33% (1/3)
回答No.3
参考URL:
http://www.mastercsharp.com/article.aspx?ArticleID=66&&TopicID=14
  • dj702e
  • ベストアンサー率33% (1/3)
回答No.2

> データの転送方法として『非同期通信』を考えているのですが 可能です UdpClientインスタンスをThread上で動かして Receive時にイベントにすれば大丈夫です その場合送信もそのThreadに渡せるようにしないといけないですが...。

ru-k
質問者

お礼

ありがとうございます. >UdpClientインスタンスをThread上で動かして >Receive時にイベントにすれば大丈夫です >その場合送信もそのThreadに渡せるようにしないといけないですが...。 Thread上で動かすとはどのようにすれば よいのでしょうか。。 何か具体的な参考ページがあったら教えて欲しいのですが ないでしょうか

  • dj702e
  • ベストアンサー率33% (1/3)
回答No.1

System.Net.Sockets.UdpClientで UDP送受信可能です サンプルの載ったURL添付いたします

参考URL:
http://dobon.net/vb/dotnet/internet/udpclient.html
ru-k
質問者

お礼

ご回答ありがとうございます。 データの転送方法として『非同期通信』を考えているのですが System.Net.Sockets.UdpClientクラスは 非同期通信にも対応しているのでしょうか

関連するQ&A

  • eMbeddedVBでのUDP通信プログラムの作成

    Windows CE(PocketPC2002)上で,UDPプロトコルの制御装置との通信プログラムを作成しております。 CEでのWINSOCKコントロールはUDPプロトコルを使用することができません。 このような場合,WINSOCKコントロール使用しないで作成する方法がありますでしょうか?。 それともeMbeddedVCであれば作成可能でしょうか?。ご経験の方がいらっしゃいましたら,ご教授願います。

  • UDP/IPでのソケット作成について(winsock)

    UDP/IPでのソケット作成について(winsock) 開発環境VC++.NET、O/S WIN2000にてソケットプログラミング(winsock2.0)をしています。 コンソールプログラミングではありませんが、WindProcは持っていません。 UDPサーバーを作り、複数クライアントの対応をしたいと考えています。 クライアントAからの通信やりとり中に クライアントBからの通信がきたら、そちらとも通信やりとりを(自動で)行いたい。 ここで問題なのが、クライアントAの要求ポートが15000で、 クライアントBの要求ポートも15000なのです。 同じ既に開いているポートでソケット作成しようとしても、socket()関数はエラーを返してくるのですが、 やり方を工夫すれば、同一ポートでの複数クライアント対応は可能なのでしょうか。不可能なのでしょうか。 可能であれば、やり方、ヒント等教えてください。よろしくお願いします。 追記 (1)TCP/IPでは、同一ポートでソケット作成が可能でした。ネットで探したサンプルプログラムが  そのような動きをしていたのですが、UDPに書換えることはできませんでした。  http://eternalwindows.jp/network/winsock/winsock04s.html (2)UNIXの場合fork()処理後に socket()作成 → bind()で同一ポートでの複数クライアント対応が  上手くいくらしいのですが、Windowsではマルチスレッド等をうまく活用すれば、  fork()と同様の処理が可能になり、目的が達成できるでしょうか。

  • UDPプロトコルについて

    自分で調べればよいことなのでしょうが・・・ もし知っている方がいたら、教えてください。 TCP/IPでは、異なるサブネットのノードとは通信できないと思うのですが、例えば、192.168.0.0/24のネットワーク内のハブに、192.168.1.10というノードを接続してあるような場合に、192.168.0.10のホストからUDPプロトコルでブロードキャストすれば、互いに通信できるのでしょうか?

  • TCPとUDP

    この度、友達よりインターネットの通信方法は TCPとUDPがありプログラマによって選択ができる と聞きました。 そこで、TCP通信が体験できたりUDP通信が体験 できるソフトウエアとかwebサイトはありますか? あったら教えてください。

  • TCP,UDPの通信プログラム

    TCPを用いた通信とUDPを用いた通信の二つのプログラムを作っています。 質問なんですが、送信元のアドレスを表示するとき getInetAddress() getAddress() の二つがあると思うのですが、この二つにはどのような違いがあるのでしょうか?

  • winsockを使ったTCP及びUDP通信について

    今回winsockを使った通信プログラムを組む事になったのですが、わからない点が多々ありましたので、どなたかご教授頂けると大変ありがたいです。 1. TCP通信において、送信側が"Hoge" "Fuga"と2回sendした際、受信側でrecvすると"Ho" "geFu" "ga"と3回受信する可能性があると認識しているのですが、これは正しいでしょうか? (到着する順序は保証されるが、recvする際に送信側がどのようにsendしたかは考慮されない) 2. UDP通信においては、上記のような現象は起きないと認識しているのですが、これは正しいでしょうか? (UDP通信では、2回sendすれば2回以上はrecvしない。パケットの破棄はあっても、分割はない) 3. もしUDP通信でも上記のような現象が起きる場合、到着順序の保証がされないという観点から、recvした際に"Ho" "ga" "geFu"と受信する事はあり得るのでしょうか? 4. 2が正しい前提での話です。UDP通信では、MTUを超えた場合、自動でパケットが分割されると聞きました。プログラムを組む際、これは意識しないといけないのでしょうか? (MTUが1500Byteの場合、UDPで2000Byteをsendすると、recvで1500,500と2回受信する?) 以上の4点です。 どなたかご存知の方いらっしゃいましたら、是非ご教授ください。

  • 80番ポート(TCP,UDP)の意味

    パケットフィルタリングの設定のために、許可するプロトコル/ポートを調査しています。 Wikipedia「TCPやUDPにおけるポート番号の一覧」によると、「80/TCP,UDP」のようにTCPとUDP両方記載されているものがあります。 私は80番ポート(HTTP)はTCPのみ使用していると思っていましたが、この表記によるとUDPも使用していると解釈できます。 80番ポートに限らず、22(SSH)、25(SMTP)なども同じ表記となっていますが、これはどういう意味なのでしょうか? 個人的には以下の3パターンのいずれかに分類されるのではと考えています。 ■80(HTTP)を例にとったパターン 1.HTTP通信はTCP、UDPどちらのプロトコルでも使用可能 (ソフトウェアはどちらのプロトコルが来ても対応できる) 2.HTTP通信はTCP、UDPの両方を使用している (ソフトウェアが必要に応じてプロトコルを使い分けている) 3.HTTP通信をTCP、UDPのどちらで実装するかはソフトウェアによって異なる ポートによって上記パターンのいずれになるかは異なりと考えられますので、TCPとUDP両方記載されているものは、両方セットでフィルタに設定しようと考えていますが、その判断について基準などがあればご教示をお願いいたします。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • systemのUDP192.168.0.255とは?

    ファイヤーウォールの遮断(ブロック)ログに system UDP 192.168.0.3(自分) 138(ポート)/UDP 192.168.0.255(相手) 138(ポート) と頻繁に出るのですがこれはいったいなんなのでしょうか? ネットワークでファイルを共有しているため TCP 192.168.0.3(自分)/192.168.0.4(相手) 以外のsystemの通信は遮断にしています 検索をしてみると UDP 192.168.0.255はファイル共有用だとあるのですがこれを遮断してもファイル共有はできています 不思議なのが system TCP 192.168.0.3(自分)/192.168.0.4(相手) system UDP 192.168.0.3(自分)/192.168.0.4(相手) と両方解放してみると、頼みもしないのに system UDP 192.168.0.3(自分)/192.168.0.255(?) と勝手に通信してしまいます 192.168.0.255とは=ネットワーク内の相手のPCということなのでしょうか? ファイヤーウォールはCOMODOのCIS3を使用しています よろしくお願いします

  • Winsock のUDP転送時の送信先サーバダウンの検出方法

    Winsock を使ってUDPを用いた通信プログラムを開発しておりますが、UDPでsendto()を用いて転送する際に、送信先のサーバがダウンしていても、sendto()の戻り値はエラーを返さないので、サーバがダウンしているかを検出する方法を教えてください。

専門家に質問してみよう