簡體   English   中英

通過C中的套接字發送空終止符

[英]Sending a null terminating character over a socket in c

我正在嘗試將其中包含空終止符的字符串發送到另一個連接。

現在我不傻了,我知道一個字符串將在該字符處停止,但是有什么可能的方法可以將字符串發送到這樣的套接字:“ Test \\ x00AFTERNULL \\ x00 \\ r \\ n”。

我在想,也許有一種方法可以將其從一種編碼轉換為另一種編碼。 我在這方面並不聰明。 感謝您的幫助/輸入。

通過套接字發送與在字符串中間是否為null無關,因為send()將發送具有特定大小的緩沖區。

該緩沖區中間可以有任意數量的零。 您可能已經使用strlen()來獲取字符串的大小,並在send()使用了它,這會導致緩沖區長度錯誤並丟失部分數據。

例如,您可以這樣做(非常簡單):

char buf[] = "Test\x00AFTERNULL\x00\r\n";
//'s' is socket descriptor
send(s, buf, sizeof(buf), 0);

通過套接字發送和接收數據使用字節數組,而不是字符串。 實例:創建數組:{'T','E','S','T',0,'A'},通過套接字發送,長度為6。其他套接字將收到相同的數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM