Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 使用winsock在每个套接字上设置MSS?_Winapi_Sockets_Tcp_Winsock_Mss - Fatal编程技术网

Winapi 使用winsock在每个套接字上设置MSS?

Winapi 使用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堆栈参数,例如MSS


我看到它可以在机器范围内完成,例如。但是我需要一种基于每个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);`