目次 - 3.関数 - 3.4UDPソケット - SDLNet_UDP_Recv

# SDLNet_UDP_Recv

`int SDLNet_UDP_Recv(UDPsocket sock, UDPpacket *packet)`

sock
  有効なUDPsocket
packet
  受信したパケット

指定のソケットsockでパケットを受信する. 渡したpacketには受け取るパケットデータに対して十分なデータサイズが確保されている必要がある. これはUDPパケットを受信しようとする前にサイズを知らなければならないことを意味する. パケットにはリモートの送信者のアドレスが設定されている. ソケットのチャネルは番号が大きい方から小さいほうへチェックされる. よってアドレスが複数のチャネルにバインドされていれば, 元アドレスをバンドする最も大きな番号のチャネルが, 小さな番号のチャネルより先に検索される. よって, パケットのチャネルは, リモートアドレスとポート番号が割り当てられた最も大きな番号のものが設定される. そうでなければチャネルは-1で, もしバインドされていない元アドレスを無視したいならば, 簡単に仕分けることができる. ローカルとリモートのチャネル番号は, 一致している必要はなく, そしておそらく一致していない. これらはローカルで設定されるだけで, パケットでは送信されない. この関数は受信を待たない(ブロックしない). 受信できるデータがない場合はすぐに戻る.

戻り値: パケットを受信したとき1, パケットを受信しなかったとき0, 失敗のとき-1

## サンプルコード

`

    // UDPパケットの受信を待つ
    //UDPsocket udpsock;
    UDPpacket packet;
    int numrecv;

    numrecv=SDLNet_UDP_Recv(udpsock, &packet);
    if(numrecv) {
        // ここでpacketを処理する
    }

`

## 参照

SDLNet_UDP_Bind, SDLNet_UDP_Send, SDLNet_UDP_SendV, SDLNet_UDP_RecvV, UDPpacket, UDPsocket

## 原文へのリンク

3.4.7 SDLNet_UDP_Recv