-1

問題が発生しました。関数 recv(ws2_32.dll) を迂回してデータを読み取ろうとしました。私は長さパラメータ - 17 として取得しますが、実際のバッファでは 2 バイトの長さしかありません。

私のコード:

int WINAPI OwnSend(SOCKET s, const char FAR *buff, int leng, int flags )
{
    //why 'leng'==17 and (sizeof(char) * strlen(buff) + 1) == 2?
    return pTrampolineSend(s, buff, leng, flags);
}

ありがとう!

4

2 に答える 2

6

問題は、strlen()その方法では役に立たないことです。バッファーに含まれるものを文字列として解釈しても、バッファーの長さを知ることはできません。ソケットは、バイナリ データを送受信できます。初期化さえされていないバッファには、何かが含まれている可能性があります。

たまたま 0 バイトがあるだけですbuff[1]

于 2012-05-20T18:17:30.757 に答える
1

len パラメータは、指定する必要があるものです。buffer パラメータにメモリを割り当て、len パラメータでどれだけの割り当てを行ったかを伝える必要があります

于 2012-05-20T18:19:39.773 に答える