各种不同的windows系统TCP,UDP的发送接收的缓冲区的最高限度为多少

naile 2001-11-15 10:03:47
我知道win98下UDP的接受缓冲区的限制为64K,但不知在win95,win NT,win2000下TCP与UDP的缓冲区限制为多少,本人有急用,望各位大虾能相告,万分感谢!!如知道Unix系统限制的,也告诉我一下。
...全文
1069 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lurenfu 2001-11-15
  • 打赏
  • 举报
回复
/proc/sys/net/core/目录下也有:rmem_max, wmem_max, rmem_default, wmem_default几项,你改这些值试试看,这可能是调整驱动层缓冲区的,/proc/sys/net/ipv4中应该可以调整你的tcp_socket的缓冲区(UDP不缓冲)
lurenfu 2001-11-15
  • 打赏
  • 举报
回复
在linux中,你还可以通过/proc文件系统动态调整内核参数
在/proc/sys/net/ipv4中有tcp_mem, tcp_rmem, tcp_wmem几项,你也可以直接修改这几项从而达到修改缓冲区大小的目的,这样不用重编内核,也不用重启动系统,方便快捷,大家 快来用linux吧
lurenfu 2001-11-15
  • 打赏
  • 举报
回复
linux系统:在linux/net/core/sock.c中有如下片断

__u32 sysctl_wmem_max = SK_WMEM_MAX;//这些常量在skbuff.h中定义,值为65535
__u32 sysctl_rmem_max = SK_RMEM_MAX;
__u32 sysctl_wmem_default = SK_WMEM_MAX;
__u32 sysctl_rmem_default = SK_RMEM_MAX;

void __init sk_init(void)
{
sk_cachep = kmem_cache_create("sock", sizeof(struct sock), 0,
SLAB_HWCACHE_ALIGN, 0, 0);
if (!sk_cachep)
printk(KERN_CRIT "sk_init: Cannot create sock SLAB cache!");

if (num_physpages <= 4096) { //物理页面,每页4K,内存<=16M
sysctl_wmem_max = 32767;
sysctl_rmem_max = 32767;
sysctl_wmem_default = 32767;
sysctl_wmem_default = 32767;//这一行可能是内核中的小BUG,应该是sysctl_rmem_default=32767,不过无关紧要,因为前面已经赋值了
} else if (num_physpages >= 131072) {//内存>=64M
sysctl_wmem_max = 131071;
sysctl_rmem_max = 131071;
}
}

看来,缓冲区的大小跟你内存大小有关系,我想,是不是可以修改这儿给的值来调整缓冲区大小?我没有试过

修改后重新编译内核,你试试,然后告诉我结果,OK?
caiyi9000 2001-11-15
  • 打赏
  • 举报
回复
win95, winNT4需要安装pack5以上补丁,才支持winsock2;
win2000我就不知道了。
caiyi9000 2001-11-15
  • 打赏
  • 举报
回复
这和操作系统无关,是和winsock的版本有关。winsock1最大支持8K,winsock最大支持64K。win98支持winsock2,因此直接用setsockopt()设置发送接收缓冲区选项即可;
win95, winNT4需要安装pack5以上补丁,才支持winsock;

4,387

社区成员

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

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