我試圖通過套接字發送一些數據與winsock。我遇到了這樣的問題:我的數據(實際上是一個char數組)可能包含一些零,但char 0x00表示空字符,並且所有後面的字符都被截斷,因爲它表示終止字符。有沒有人有關於我應該如何解決這個問題的想法?我可以使用什麼替代方法?具有0x00字符的C++數據數組
我想要做的是有可能代表整數,字符數組或別的東西Winsock發送字節。接收部分會照顧正確的閱讀,但這不是這篇文章的關注。
我試圖通過套接字發送一些數據與winsock。我遇到了這樣的問題:我的數據(實際上是一個char數組)可能包含一些零,但char 0x00表示空字符,並且所有後面的字符都被截斷,因爲它表示終止字符。有沒有人有關於我應該如何解決這個問題的想法?我可以使用什麼替代方法?具有0x00字符的C++數據數組
我想要做的是有可能代表整數,字符數組或別的東西Winsock發送字節。接收部分會照顧正確的閱讀,但這不是這篇文章的關注。
我想你可能會做這樣的事情: `
個char [100];
//做的東西與S
發送(襪子,S,strlen的(一個或多個),標誌); `
的strlen通過計算有多少caracters是找到一個字符串的lenght直到發現NULL(0)。
使數據流中的前兩個字節成爲您發送緩衝區的長度。 然後發送那麼多字節。
在另一端讀取這兩個字節,然後您就知道到底應該有多少字節。
這將讓你解決這個問題。
也google網絡字節順序。有一些方便的函數調用,使便攜性變得容易。
但是'send'系列函數不使用NUL char作爲結束標記。相反,他們會收到要發送的字符數。所以你的問題根本不存在! – rodrigo
是的,但C++字符數組將切斷空字符後的所有事物! – user1628526
不!只有當char數組被看作_strings_時纔會發生這種情況。這取決於函數(請參閱各個文檔)。例如,'strcpy/strcmp'使用NUL char,而'memcpy/memcmp'不使用。顯然,winsock'send'函數不會將字節緩衝區視爲字符串。 – rodrigo