socket 的 sendto 使用中的问题

发布于 2022-07-22 10:01:15 字数 191 浏览 8 评论 6

我使用sendto发送一个 char buffer[4]={0x31,0x82,0x00,0x76};
数据发送到0x00就截止了后面的0x76就发不出去,我想可能是sendto把0x00当/0处理了
请问如何才能把0x00发出去?
我将buffer的char类型变为int,结果什么都发不出去了。。。。

帮帮我,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

情域 2022-07-23 00:15:35

是 楼上的大哥.

江心雾 2022-07-23 00:14:56

原帖由 gothicane 于 2006-4-20 08:34 发表
用char 型   sizeof   可以发出去了

版主能简单点拨一下原理么?  
是不是strlen   包括了结尾字符?
我刚接触C不久  谢谢了

应该是的,strlen遇到/0生效

疯到世界奔溃 2022-07-23 00:12:47

用char 型   sizeof   可以发出去了

版主能简单点拨一下原理么?  
是不是strlen   包括了结尾字符?
我刚接触C不久  谢谢了

天荒地未老 2022-07-22 23:55:40

原帖由 gothicane 于 2006-4-19 22:01 发表
将buffer的char类型变为int,然后用sizeof(buffer)?

我去试试  谢谢

为啥要变成int型??

帅哥哥的热头脑 2022-07-22 23:44:54

将buffer的char类型变为int,然后用sizeof(buffer)?

我去试试  谢谢

最丧也最甜 2022-07-22 21:55:18

ssize_t  sendto(int  s,  const void *buf, size_t len, int flags, const
       struct sockaddr *to, socklen_t tolen);

第3个参数你用的strlen吗?

换成sizeof

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文