2020.11.22Pythonを用いてUDP通信を行う方法を、具体的なシーケンス及びソースコードを交えて紹介していきます。※本記事は以前Qiitaに投稿したこちらの記事を更新したものになります。はじめに注意事項ですが、ネットワークプログラムでは使い方によってはDOS攻撃のように他人のネットワークに影響を与えてしまいます。他人のネットワークに迷惑をかけるような通信を行わないように注意してください。本記事中の内容によって発生したいかなる損害についても筆者は責任を取ることはできません。UDPによるソケットプログラミングソケットとはアプリケーションプログラムからネットワーク通信サービスを受けるときのAPIです[1]。UDPによるソケット通信の一例をシーケンス図で表しました。Serverは起動すると通信を受け付けるようになります。Clientはサーバーに向けてメッセージを送信します。messageServerの処理socketシステムコールを用いてUDP用のソケットを作成します。bindシステムコールを用いて使用するIPアドレスとポート番号を指定します。ここまででOS内部でパケットを受信する準備が出来ました。recvfromシステムコールを用いてClientからのmessageを待ちます。サーバプログラムはrecvfromの引数から、受信したメッセージの送り主(Client)のIPアドレスとポート番号を把握します。sendtoシステムコールでClientへmessageを送信します。Serverがmessageを送信する際はrecvfromシステムコールで受信したIPとポートをしようします。Clientの処理socketシステムコールを用いてUDP用のソケットを作成します。sendtoシステムコールを用いてServerへmessageを送信します。Client側のポート番号は最初にsendtoを実行した際にOSによって自動的に割り当てます。recvfromシステムコールでServerからのmessageを受信します。ソケットシステムコール今回の記事で使用したソケットシステムコールを記載します。TCPのようなコネクション型の通信を行う場合には他にも必要なシステムコールが増えてきます。ソケットを作成します。ソケットに自ホストのIPアドレス(、ポート番号)を設定します。messageの受信を受け付けます(コネクションレス型)。送信元のアドレスを返り値として取得します。送信先のアドレスを指定してmessageを送信します(コネクションレス型)。以上の流れをpythonで実装したソースコードが以下になります。Serverのアドレスを用意。Serverのアドレスは確認しておく必要がある。上記ソースコードを実行して、実際の動作を確認してみます。サーバーは起動すると、クライアントからのメッセージを受け付けます。クライアントは起動すると、サーバーに送信するメッセージの入力を受け付けます。クライアントでメッセージを入力し、サーバーへ送信します。サーバーでクライアントからのメッセージが受信されているのがわかります。サーバーは受信完了のレスポンスをクライアントに送信し、クライアントは次のメッセージの受付待ち状態になります。以上で、動作確認も完了です。終わりにPythonによるUDP通信について動作フローを紹介し、シンプルなソースコードを動かしてみました。需要がありそうでしたらTCP編も執筆したいと思います。コピーゆうたをフォローするゆうた関連記事TECHNOLOGY【入門】JavaScriptでWebサイトを操作する方法【DOM】この記事では、JavaScriptを用いてWebサイトを操作する基本的な方法について紹介します。新しい技術を身に付けるには、実例と共に動作を確認しイメージを掴みつつ、実践していくのが効率的です。画像処理が注目されているけど、プログラムで画像を扱うには何から始めればいいんだろう?みんながつま...OpenCV【OpenCV】直線/白線を検出する方法【自動運転】OpenCVを用いた直線を検出する方法を紹介します。実践で身に付ける身に付けるhtml+cssの後編として、cssの書き方について紹介します。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。コメントデータの処理方法の詳細はこちらをご覧ください。ホームLinuxプロフィールゆうた本業はIT企業でデータサイエンスをしています。.メニューTOPTECHNOLOGYBUSINESSBLOGお問い合わせホーム検索トップサイドバープロフィールゆうた本業はIT企業でデータサイエンスをしています。最近のコメントタイトルとURLをコピーしました。