2012-05-20 33 views
-1

我有一個問題,我繞過函數recv(ws2_32.dll)並嘗試讀取數據。我得到了leng參數 - 17但在真正的緩衝區中只有2個字節長度。錯誤的緩衝區長度(const char FAR *)

我的代碼:

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); 
} 

謝謝!

+1

你將不得不向我們展示更多的代碼。另外,FAR修飾詞已經過時15年了,幫你一個忙,並刪除它。 –

+0

sizeof(char)== 1的定義 –

回答

5

問題是strlen()沒有那麼有用。通過將其中的任何內容解釋爲字符串,您無法判斷緩衝區的長度。套接字可以發送和接收二進制數據。尚未初始化的緩衝區可能包含任何內容。

有恰好是在buff[1]

1

LEN參數0字節是你需要提供的東西。你應該爲緩衝區參數分配內存,並告訴你用len參數做了多少分配