Winapi 使用winsock在每个套接字上设置MSS?
听起来很疯狂,但在生活中,有时需要手动配置TCP堆栈参数,例如MSSWinapi 使用winsock在每个套接字上设置MSS?,winapi,sockets,tcp,winsock,mss,Winapi,Sockets,Tcp,Winsock,Mss,听起来很疯狂,但在生活中,有时需要手动配置TCP堆栈参数,例如MSS 我看到它可以在机器范围内完成,例如。但是我需要一种基于每个tcp套接字配置它的方法 您可以尝试使用TCP_MAXSEG调用setsockopt(),这是在。但奇怪的是,TCP_MAXSEG不是一个有效的选项名。那么它可能可以设置但不能检索?我想试试看它是否有效。这应该是标准的setsockopt和TCP\u MAXSEG。请记住,这必须在启动连接之前完成(即在connect或listen之前),TCP堆栈可能会根据路径MTU更
我看到它可以在机器范围内完成,例如。但是我需要一种基于每个tcp套接字配置它的方法 您可以尝试使用TCP_MAXSEG调用
setsockopt()
,这是在。但奇怪的是,TCP_MAXSEG不是一个有效的选项名。那么它可能可以设置但不能检索?我想试试看它是否有效。这应该是标准的setsockopt
和TCP\u MAXSEG
。请记住,这必须在启动连接之前完成(即在connect
或listen
之前),TCP堆栈可能会根据路径MTU更改实际值。我认为windows可能不允许您调整每个套接字的MSS
这是测试样本:只需使用
TCP\u MAXSEG
调用setsockopt
#包括
在connect
或listen
之前设置它
我在windows10上用vs2015测试了它。此代码可以在VS2015中通过编译,但无法运行。Windows在运行时将出现错误
wsaenoprotoop
谢谢,我查一下。也许它是在其他版本的平台sdk头中定义的。。。
`int mss = 512;`
`setsockopt(sock, IPPROTO_TCP, TCP_MAXSEG, (char*)&mss, sizeof(mss);`