怎样改变WinSock下数据包的长度??

AKULAKK 2003-06-19 03:49:31
今天调试的时候发现,有的程序的数据包的大小,恰好是发送的有效信息的长度。
而,我写得程序(很多其他程序也是)的数据包发送的数据包始终好像是1024字节长,但是实际上我的有效信息可能只有2个字节char型,也就是说在16进制下查看的封包有102X个都是乱码,而这些数据都是要发送出去的,我想,是不是从某种意义上说会加大网络流量和负荷,而这些都是没必要的吧?
对于这种情况,怎样写Winsock,才能够最大的传输有效大小的封包呢??
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
alanwang_ 2003-06-23
  • 打赏
  • 举报
回复
那我就不太懂了!up
不过如果是tcp的话,几十字节几十字节发送数据时,有可能会把多次的数据拼装到1个IP包中。
发送时没有用TCP_NODELAY参数吧!
AKULAKK 2003-06-22
  • 打赏
  • 举报
回复
答alenwang_(alan)
我是抓包发现的。
Fly1980 2003-06-21
  • 打赏
  • 举报
回复
gz
alanwang_ 2003-06-20
  • 打赏
  • 举报
回复
在应用层上怎么能知道底层实际发送的字节数呢?

-〉但是实际上我的有效信息可能只有2个字节char型,也就是说在16进制下查看的封包有
-〉102X个都是乱码,
是抓包发现的还是直接看发送缓冲区发现的,如果是看发送缓冲区发现乱码,是因为没有清零的原因,在填写有效信息之前memset一下缓冲区就没事了。
AKULAKK 2003-06-20
  • 打赏
  • 举报
回复
哦,我抓的只是应用层的数据包。
实际上就是00000000-000003F0 就是 0-1008 个字节。
默认情况下大小是1008,但是我不知道在Soket里面怎么改动这个参数了/
lichungen 2003-06-19
  • 打赏
  • 举报
回复
我觉得好象不是这样吧,就比如以太网吧,它传输单元的有效长度是在46--1500之间,也就是最小传输单元为46,除去IP、TCP包头,应用层的数据最小应该为6,如果小于6就填充到6。但传输大量数据时最好是按最大传输单元进行传输,这样就充分的利用网络

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧