社区
C++ 语言
帖子详情
网络发送数据包
Althonx1024
2009-09-08 09:23:11
socket套接字编程,需要在发送数据包结构的时候根据当前用户输入的内容长度来增减数据包的大小,请问有什么方法能做到吗?
...全文
218
14
打赏
收藏
网络发送数据包
socket套接字编程,需要在发送数据包结构的时候根据当前用户输入的内容长度来增减数据包的大小,请问有什么方法能做到吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ETIAN
2009-09-08
打赏
举报
回复
send()的len参数可以调节发送数据的长度
int send(
__in SOCKET s,
__in const char* buf,
__in int len,
__in int flags
);
独孤过儿
2009-09-08
打赏
举报
回复
补充一下:关于分片和重组,可以参考RFC 791。这个只是针对IPv4的哦,IPv6不支持分片和重组
独孤过儿
2009-09-08
打赏
举报
回复
如果你用TCP来发送,不需要关心包的长度问题
总长超过MTU的包,在IP层会被分片和重组,这是IP协议的内容,不需要上层来care
「已注销」
2009-09-08
打赏
举报
回复
...
「已注销」
2009-09-08
打赏
举报
回复
我需要了解的是怎么发送变长数据包,谢谢
oLINo
2009-09-08
打赏
举报
回复
构造包的时候,包结构头不要添好数据段长度。服务器接收时候先得到长度,再按照长度来接收数据。
「已注销」
2009-09-08
打赏
举报
回复
C++定义数组要在编译时确定长度
这里需求是根据用户输入之后再确定数组长度,不能在编译期确定
猫已经找不回了
2009-09-08
打赏
举报
回复
[Quote=引用楼主 althonx1024 的回复:]
socket套接字编程,需要在发送数据包结构的时候根据当前用户输入的内容长度来增减数据包的大小,请问有什么方法能做到吗?
[/Quote]
你接收用户输入,存到数组啊,然后把这个数组send入socket的缓冲区。
请问你有什么问题?
「已注销」
2009-09-08
打赏
举报
回复
我也不想把自己归为邪教啊,但老板他非要节约这点个数据,没办法,我不如地狱谁入地狱,刚才稍稍测试了下,基本可行...
独孤过儿
2009-09-08
打赏
举报
回复
[Quote=引用 9 楼 althonx1024 的回复:]
在补充理解下,
结构体定长600,其中尾部500为用户输入的部分
得知用户只是输入了200.
那么实际发送的时候,只发送300出去,后面的空数据部分不发了
[/Quote]
你误入歧途了...协议不是这么玩的!
正常的发送过程是这样的:
应用层将自己这层的消息发送给下一层,然后下一层计算出从上层来的数据长度,然后自己在这层添加上协议
头,然后继续发送给自己的下一层,下一层再做同样的操作
所以对于协议栈来说:下层是不应该,也不能为上层分配一个固定大小的空间,等着上层的数据到来,然后装
进去的;必须要把上层的数据作为自己的一个净荷封装起来
das_jack
2009-09-08
打赏
举报
回复
struct sendbuffer
{
int buf_len;
char *buf;
};
根据用户的输入,初始化这个结构,buf_len = 用户输入的字节数,buf指向用户输入的缓冲
然后就是用集中写send_v(iov[2])发送长度跟内容
「已注销」
2009-09-08
打赏
举报
回复
在补充理解下,
结构体定长600,其中尾部500为用户输入的部分
得知用户只是输入了200.
那么实际发送的时候,只发送300出去,后面的空数据部分不发了
「已注销」
2009-09-08
打赏
举报
回复
现在想法就是把有变动的数据放在结构体的尾部
申请原始结构体时,对于其中的char aaa[]数组还是使用固定长度,例如500
然后做一个输入缓冲,对上面的aaa数组进行拷贝.
得知输入缓冲区实际字符长度,然后把结构体人为得知的空数据不发送出去
请问这样做有没有什么很大很恶心的缺点啊?(字符串结尾'\0'已被处理了,或者在接收端解析的时候进行处理)
slblake
2009-09-08
打赏
举报
回复
这个不需要你操心的,你只要构造好你要发送的数据包就可以了。长度根据数据包的实际大小来确定。
用
发送
ICMP
数据包
的方法实现的Ping程序
用
发送
ICMP
数据包
的方法实现的Ping程序
管理员必须掌握的常用命令
它所利用的原理是这样的:
网络
上的机器都有唯一确定的IP地址,我们给目标IP地址
发送
一个
数据包
,对方就要返回一个同样大小的
数据包
,根据返回的
数据包
我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等...
轻松构建并
发送
ICMP
数据包
它会列出目前正在使用的网卡等一些信息,我们勾选
发送
数据包
(注:不勾选
发送
数据包
直接点击接口是抓包页面)。这里填的目的MAC是 11.11.11.11 网关的MAC地址。可以看到的确成功了,并且收到了网关的应答消息 数据也是...
Linux命令(35):ping命令-向
网络
主机
发送
数据包
ping是最常用的
网络
连接命令,ping会向指定的
网络
主机
发送
特殊
网络
数据包
IMCP ECHO_REQUEST。多数
网络
设备收到该
数据包
会做出回应,通过此方法即可难
网络
连接是否正常,用法如下: ping [参数] [主机名或IP] ...
python模拟TCP与UDP
发送
数据包
python模拟TCP与UDP
发送
数据包
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章