MakeUDPSocket

UDPを使用して通信するためのソケットを作成する

MakeUDPSocket

(プラグイン / モジュール : DxLibW)

解説

送受信が高速なUDPを使用してデータ通信を行うためのソケットハンドルを作成します。

戻り値の「UDP通信用のソケットハンドル」を使用してデータの送受信を行いますので、
戻り値は変数などに保存するようにしてください。

ConnectNetWork 関数で作成するネットハンドルは通信品質の高い代わりに通信速度の遅いTCPを使用して通信を行いますが、
この MakeUDPSocket 関数を含め関数名に「UDP」が付いている関数は全て通信品質が低い代わりに通信速度が高速なUDPを使用して通信を行うための関数です。

ConnectNetWork, NetWorkSend, NetWorkRecv 等の関数が使用するTCPに対する、MakeUDPSocket, NetWorkSendUDP, NetWorkRecvUDP 等の関数が使用するUDPとの違いは以下の通りです。

・「接続を確立する」という手順が無い

UDPはデータを送信する度に送信先のIPとポート番号をしていするので、

接続を確立する、接続を解除する( 切断する )といったような「接続状態」

というものがありません。

・データが相手に届かないことがある

TCPの場合は NetWorkSend で送信されたデータが何処かで無くなってしまった

場合は自動的に再送信する仕様になっているので、NetWorkSend したデータが

相手に届かないことがあることはあまり想定する必要はありませんが、UDPでは

そのような仕組みが無いので NetWorkSendUDP で送信したデータが必ず相手に

届かないことがあります。( その代わり早いです )

・データが順番通りに届かないことがある

TCPの場合は NetWorkSend で送信したデータは、送信した順番通りに相手の

NetWorkRecv で取得できる受信データとして届きますが、UDPの場合は後から

NetWorkSendUDP で送信したデータが先に NetWorkSendUDP で送信したデータ

より早く相手に届く、ということがあります。

・一度に送信できる最大データサイズは 65507byte

TCPを使用する NetWorkSend では基本的に一度に送信できるデータの

最大サイズに制限はありませんが、UDPを使用する NetWorkSendUDP

では一度に送信できるデータの最大サイズは 65507byte となります。

ただ、UDPでは一度に送信するデータのサイズが大きくなれば

なるほど相手に届く確率が低くなるので、一般的にはこのサイズの

データを一度に送信することはありません。

( インターネットを介してデータの送受信を行う場合は、一度に送信する

データのサイズは 500byte 程度に抑えた方が良いです )

・データは送信時のサイズそのまま受信側に届く

例えばTCPを使用する NetWorkSend の場合 100byteのデータを

2回に分けて送信しても、受信側では一回の NetWorkRecv で 200byteの

データを受信することがありますが、UDPを使用する NetWorkSendUDP で

同じことをした場合は必ず NetWorkRecvUDP 側では 100byteづつ取得する

ことになります。

この点はTCPより扱いやすいかもしれません。

以上のように制限が多いですが、
基本的に対戦格闘ゲームのオンライン対戦のようなリアルタイム性の高いゲームの通信対戦では必ずUDPを使うことになりますので( TCPでは速度が追いつかない )、
そのような通信対戦機能をソフトに搭載したい場合は何とか使いこなす必要があります。

引数で指定するポート番号はデータを受信するポート番号となります。

UDPではデータを送信する関数 NetWorkSendUDP でその都度送信先のIPとポート番号を指定しますので、
RecvPort に -1 を渡すことで送信専用のソケットにすることができます。

尚、一つのマシンではソフトが違っても同じポート番号を持つソケットを同時に複数作成・保持することはできませんので注意してください。
※ DxLib のハンドル値は 32bit/64bit 共に int 型です。

戻り値:
  0以上:UDP通信用のソケットハンドル(int型の識別値)

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib 通信
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs