2012-10-06 10 views
0

我試圖通過套接字發送一些數據與winsock。我遇到了這樣的問題:我的數據(實際上是一個char數組)可能包含一些零,但char 0x00表示空字符,並且所有後面的字符都被截斷,因爲它表示終止字符。有沒有人有關於我應該如何解決這個問題的想法?我可以使用什麼替代方法?具有0x00字符的C++數據數組

我想要做的是有可能代表整數,字符數組或別的東西Winsock發送字節。接收部分會照顧正確的閱讀,但這不是這篇文章的關注。

+5

但是'send'系列函數不使用NUL char作爲結束標記。相反,他們會收到要發送的字符數。所以你的問題根本不存在! – rodrigo

+0

是的,但C++字符數組將切斷空字符後的所有事物! – user1628526

+5

不!只有當char數組被看作_strings_時纔會發生這種情況。這取決於函數(請參閱各個文檔)。例如,'strcpy/strcmp'使用NUL char,而'memcpy/memcmp'不使用。顯然,winsock'send'函數不會將字節緩衝區視爲字符串。 – rodrigo

回答

1

我想你可能會做這樣的事情: `

個char [100];

//做的東西與S

發送(襪子,S,strlen的(一個或多個),標誌); `

的strlen通過計算有多少caracters是找到一個字符串的lenght直到發現NULL(0)。

0

使數據流中的前兩個字節成爲您發送緩衝區的長度。 然後發送那麼多字節。

在另一端讀取這兩個字節,然後您就知道到底應該有多少字節。

這將讓你解決這個問題。

也google網絡字節順序。有一些方便的函數調用,使便攜性變得容易。