iT邦幫忙

0

C++ sendto 要如何傳送\0(字串結尾)

  • 分享至 

  • xImage

我用Sendto的時候發現它會自動把字串切到\0的地方,\0並不會被傳送,但我想把\0一併送出
例如:
msg[14] = "Hello World!\0"
用wireshark抓封包來看只看到"Hello World!",\0不見了
請各位大大幫忙。

wrxue iT邦好手 1 級 ‧ 2019-08-31 23:38:24 檢舉
痾,突然試出來了。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-02-19 09:10:09

您可以使用sendto函數的第三個引數傳遞字符串的實際大小,而不是依賴字符串結束的\0來判斷大小。

例如:

char msg[] = "Hello World!\0";
int size = sizeof(msg); // 字符串的實際大小,包括\0
sendto(socket, msg, size, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));

這樣可以確保整個字符串包括\0都會被傳送。

我要發表回答

立即登入回答