目次 - 3.関数 - 3.3TCPソケット - SDLNet_TCP_Recv

# SDLNet_TCP_Recv

`int SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen)`

sock
  利用可能な接続されたTCPsocket
data
  sockから受信したデータを書き込むバッファへのポインタ
maxlen
  読み込んだデータを書き込むdataの最大長(バイト数)

ソケットsockから, ちょうどmaxlenバイトのデータを受信し, dataが示すメモリに書き込む. この関数はサーバのソケットでは使えない. エラーまたは接続が閉じられない限り, maxlenバイトのバッファを読み込む. 相手の送信より多く読もうとすると, 要求の長さが満たされるか相手が切断するまで待つ. アプリケーションによっては1byteずつ受信する必要がある. 例えば, 送信側がテキストをまとめて送る場合でも, 受信側は1行ずつ読みたいだろう. この場合は, 複数の行や1行に満たないテキストが無秩序に含まれるテキストを読む代わりに, 改行するためのコードを自分自身で見つけたいはずだ.

戻り値: 受信したバイト数. エラーが発生した, またはリモート側が接続を閉じた場合は0以下

## サンプルコード

`

    // sockからいくつかのテキストを受信する
    //TCPsocket sock;
    #define MAXLEN 1024
    int result;
    char msg[MAXLEN];

    result=SDLNet_TCP_Recv(sock,msg,MAXLEN);
    if(result%lt;=0) {
        // エラーが発生した場合は無視することもできる
        // 恐らく現在は使えないだけなので, 切断するとよい
    }
    printf("受信した: \"%s\"\n",msg);

`

## 参照

SDLNet_TCP_Send, SDLNet_TCP_Accept, SDLNet_TCP_Open, SDLNet_TCP_GetPeerAddress, SDLNet_TCP_Close, TCPsocket

## 原文へのリンク

3.3.6 SDLNet_TCP_Recv