1

データが完全に送信されたことを確認するために recvall() 関数を実装しています。また、次のように send() 関数を sendall() に変更しました。

int sendall (int consocket, char* buf, int* len)
{
    int total = 0;
    int bytesleft = *len; // how many we have left to send
    int n;
    while(total < *len) {
        n = send(consocket, buf+total, bytesleft, 0);
        if (n == -1) { break; }
        total += n;
        bytesleft -= n;
        *len = total; // return number actually sent here
        return n==-1?-1:0; // return -1 on failure, 0 on success
    }
}

recvall() を実装するにはどうすればよいですか? サーバーから 14 バイトの構造体を送信し、クライアントをチェックインして 12 バイトを取得するとします。信頼できない状況で、残りの 2 バイトを取得するにはどうすればよいでしょうか...時間をかけて試してみました...助けを歓迎します。

4

1 に答える 1