win10设置socket缓冲区

1.怎样用setsockopt重新设置SOCKET缓冲区的大小

// 这段代码是改变接系统接收缓冲区大小。每次可以从另一端接收数据大小变大。

int nBufLen;

int nOptlLen;

nErrCode = getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)nBufLen, &nOptlLen);

if (SOCKET_ERROR == nErrCode)

{

return EXIT_FAILURE;

}

nBufLen *= 10;

nErrCode = setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)&nBufLen, nOptlLen);

if (SOCKET_ERROR == nErrCode)

{

return EXIT_FAILURE;

}

// 检查设置系统接收数据缓冲区是否成功

int uiNewRcvBuf;

int nOptLen;

getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)uiNewRcvBuf, &nOptLen);

if (SOCKET_ERROR == nErrCode || uiNewRcvBuf != nBufLen)

{

return EXIT_FAILURE;

}

// 这一段,是更改发送缓冲区大小,使我们每次可以发送比较大的数据。

unsigned int uiOldSize = 0;

unsigned int uiNewSize = 0;

int uiRcvBufLen = 0;

if((uiOldSize = GetSysBuffSize(inSocket)) == 0)

{

// 获取缓冲大小失败

return false;

}

uiRcvBufLen = sizeof(uiBuffSize);

if (SOCKET_ERROR == setsockopt(inSocket, SOL_SOCKET, SO_SNDBUF, (char*)&uiBuffSize, uiRcvBufLen))

{

// 修改系统缓冲区大小失败

return false;

}

// 检查设置系统发送缓冲区是否成功

uiRcvBufLen = sizeof(uiNewSize);

if (SOCKET_ERROR == getsockopt(inSocket, SOL_SOCKET, SO_SNDBUF, (char*) &uiNewSize, &uiRcvBufLen) || uiNewSize == uiOldSize)

{

// 修改系统发送缓冲区失败

return false;

}

win10设置socket缓冲区

2.怎样用setsockopt重新设置SOCKET缓冲区的大小

// 这段代码是改变接系统接收缓冲区大小。每次可以从另一端接收数据大小变大。

int nBufLen;

int nOptlLen;

nErrCode = getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)nBufLen, &nOptlLen);

if (SOCKET_ERROR == nErrCode)

{

return EXIT_FAILURE;

}

nBufLen *= 10;

nErrCode = setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)&nBufLen, nOptlLen);

if (SOCKET_ERROR == nErrCode)

{

return EXIT_FAILURE;

}

// 检查设置系统接收数据缓冲区是否成功

int uiNewRcvBuf;

int nOptLen;

getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)uiNewRcvBuf, &nOptLen);

if (SOCKET_ERROR == nErrCode || uiNewRcvBuf != nBufLen)

{

return EXIT_FAILURE;

}

// 这一段,是更改发送缓冲区大小,使我们每次可以发送比较大的数据。

unsigned int uiOldSize = 0;

unsigned int uiNewSize = 0;

int uiRcvBufLen = 0;

if((uiOldSize = GetSysBuffSize(inSocket)) == 0)

{

// 获取缓冲大小失败

return false;

}

uiRcvBufLen = sizeof(uiBuffSize);

if (SOCKET_ERROR == setsockopt(inSocket, SOL_SOCKET, SO_SNDBUF, (char*)&uiBuffSize, uiRcvBufLen))

{

// 修改系统缓冲区大小失败

return false;

}

// 检查设置系统发送缓冲区是否成功

uiRcvBufLen = sizeof(uiNewSize);

if (SOCKET_ERROR == getsockopt(inSocket, SOL_SOCKET, SO_SNDBUF, (char*) &uiNewSize, &uiRcvBufLen) || uiNewSize == uiOldSize)

{

// 修改系统发送缓冲区失败

return false;

}

3.windows socket error:由于系统缓冲区空间不足,阻止以上的操作

这个问题并不直观,并且很难检查。因为,乍一看,它很像普通的死锁,或者内存泄露。假设你已经弄好了你的服务器并且能够很好的运行。当你对服务器进行承受力测试的时候,它突然挂机了。如果你幸运,你会发现这和wsaenobufs出错有关。

伴随着每一次的重叠发送和接收操作,有数据的内存提交可能会被加锁。当内存被锁定时,它不能越过物理内存页。操作系统会强行为能够被锁定的内存的大小设定一个上限。当达到上限时,重叠操作将失败,并发送wsaenobufs错误。

假如一个服务器在在每个连接上提供了很多重叠接收,随着连接数量的增长,很快就会达到这个极限。如果服务器能够预计到要处理相当多的并发客户端的话,服务器可以在每个连接上仅仅回复一个0字节的接收。这是因为没有接收操作和内存无关,内存不需要被锁定。利用这个方法,每一个套接字的接收内存都应该被完整的保留,这是因为,一旦0字节的接收操作完成,服务器仅仅为套接字的接收内存的所以数据内存返回一个非阻塞的接收。利用wsaewouldblock,当非阻塞接收失败时,也没有数据被阻塞。这种设计的目的是,在牺牲数据吞吐量的情况下,能够处理最大量的并发连接。当然,对于客户端如何和服务器交互,你知道的越多越好。在以前的例子中,每当0字节的接收完成,返回存储了的数据,马上执行非阻塞接收。假如服务器知道客户端突然发送数据,当0字节接收一旦完成,为防止客户端发送一定数量的数据(大于每个套接字默认的8k内存大小),它可以投递一个或多个重叠接收。

win10设置socket缓冲区

转载请注明出处windows之家 » win10设置socket缓冲区

win10

win10扬声器空间音效设置

阅读(79)

本文主要为您介绍win10扬声器空间音效设置,内容包括win10系统怎么设置扬声器为默认播放设备,WIN10的空间音效不能用怎么办?,win10空间音效要这么打开我的这个好像有点问题。win10系统增加了空间音效的功能,通过该功能可以让声音听起来更动听

win10

win10网易云音乐怎么进入设置

阅读(89)

本文主要为您介绍win10网易云音乐怎么进入设置,内容包括win10怎么网易云音乐播放器,win10网易云桌面歌词应该怎么设置,网易云音乐win10怎么开启桌面歌词。换PC版网易云音乐。win10 网易云音乐没有桌面歌词,是因为在win10系统中,应用商店里的

win10

win10如何右键设置压缩

阅读(84)

本文主要为您介绍win10如何右键设置压缩,内容包括win10右键没有压缩文件选项,右键没有压缩选项,戴尔win10右键没有压缩文件选项。以在WIN10系统中操作为例,当出现右键没有压缩选项可以通过在电脑上打开该软件来进行设置。打开该软件以后点击

win10

win10设置点击就闪退

阅读(112)

本文主要为您介绍win10设置点击就闪退,内容包括win10一点开设置就闪退?,win10打不开设置闪退怎么办,为什么win10的设置有时打不开或者会闪退?。win10一点开设置就闪退?在操作win10系统的时候,有些用户想要对系统中的个方面功能进行修改时,就可

win10

win10系统系统盘共享设置

阅读(86)

本文主要为您介绍win10系统系统盘共享设置,内容包括windows10系统怎样设置共享盘,win10系统怎么设置局域网内磁盘共享,win10系统怎么设置共享文件夹。Win10系统中共享文件夹的操作流程: 在你要共享的文件夹上点右键然后再点【共享】---【特

win10

怎么设置win10我的文档

阅读(84)

本文主要为您介绍怎么设置win10我的文档,内容包括win10怎么在桌面添加我的文档,如何将win10的我的文档改变位置,怎样在win10桌面添加“我的文档”图标。升级win10后部分用户发现桌面没有个人文档,这样不方便我们查看或者添加视频、音乐、图

win10

win10怎么把地区设置为曼谷

阅读(84)

本文主要为您介绍win10怎么把地区设置为曼谷,内容包括玩绝地求生泰服怎么修改本地地址,w10中天气选项中怎么设置城市,win10应用商店怎么切换国家区域。在切换 Windows10 默认显示语言之前必需要安装相应的语言包,如下方法:1按 Windows + I 快

win10

win10怎么设置无缝断网连接

阅读(70)

本文主要为您介绍win10怎么设置无缝断网连接,内容包括win10不拔网线怎么断开网络连接,win10的系统怎么断开网络连接,win10怎么设置自动断开网络连接。我之前的情况与你一样,摸了好几天,找到这个,希望对你能有点帮助 我的电脑--属性--设备管理

win10

win10怎么打开搜狗的设置

阅读(97)

本文主要为您介绍win10怎么打开搜狗的设置,内容包括win10系统搜狗输入法怎么设置,win10搜狗输入法怎么打开设置,搜狗拼音在win10中怎么设置。方法/步骤1.将鼠标移动到电脑桌面左下角,点一下开始,再点击“所有应用”2在左侧应用列表中找到wind

win10

win10首次开机设置指纹识别

阅读(108)

本文主要为您介绍win10首次开机设置指纹识别,内容包括win10怎样设置指纹识别,win10电脑指纹识别怎么设置,win10系统如何让指纹支持开机。首先我们需要把电脑升级到win10,然后点击任务栏下面的消息的按钮,在弹出的设置里面,点击右上角的全部设

win10

怎么设置win10不自动更新驱动

阅读(78)

本文主要为您介绍怎么设置win10不自动更新驱动,内容包括win10怎么关闭自动更新驱动,怎么不让win10显卡驱动更新,如何禁止WIN10自动更新驱动。打开控制面板,点击“硬件和声音”下的“查看设备和打印机”。

win10

win10点击指纹设置跳出

阅读(89)

本文主要为您介绍win10点击指纹设置跳出,内容包括win10指纹无法设置提示关闭windowshello怎么办,联想k3280,win10设置指纹登陆,出现windowshello安装程序出现问,win10指纹解锁设置不了。遇到win10指纹无法正常的情况,小编在微软官方进行咨询

win10

怎么把win10设置成win7系统

阅读(91)

本文主要为您介绍怎么把win10设置成win7系统,内容包括如何把win10界面换成win7,电脑win10系统怎么改win7系统?,win10系统怎么把开始菜单改成win7。把win10的系统换成win7,只需要下载win7系统镜像文件后再使用u盘进行安装系统即可,具体安装操

win10

win10怎么设置协同

阅读(93)

本文主要为您介绍win10怎么设置协同,内容包括windows10系统怎么设置局域网共享,win10,IE浏览器上不了公司协同了,win10怎么建立局域网共享文件。工具:win10系统电脑一台步骤:打开win10系统电脑,右键WIN10桌面上的此电脑图标,在弹出的菜单中选择

win10

win10扬声器空间音效设置

阅读(79)

本文主要为您介绍win10扬声器空间音效设置,内容包括win10系统怎么设置扬声器为默认播放设备,WIN10的空间音效不能用怎么办?,win10空间音效要这么打开我的这个好像有点问题。win10系统增加了空间音效的功能,通过该功能可以让声音听起来更动听

win10

win10网易云音乐怎么进入设置

阅读(89)

本文主要为您介绍win10网易云音乐怎么进入设置,内容包括win10怎么网易云音乐播放器,win10网易云桌面歌词应该怎么设置,网易云音乐win10怎么开启桌面歌词。换PC版网易云音乐。win10 网易云音乐没有桌面歌词,是因为在win10系统中,应用商店里的

win10

win10如何右键设置压缩

阅读(84)

本文主要为您介绍win10如何右键设置压缩,内容包括win10右键没有压缩文件选项,右键没有压缩选项,戴尔win10右键没有压缩文件选项。以在WIN10系统中操作为例,当出现右键没有压缩选项可以通过在电脑上打开该软件来进行设置。打开该软件以后点击

win10

win10设置点击就闪退

阅读(112)

本文主要为您介绍win10设置点击就闪退,内容包括win10一点开设置就闪退?,win10打不开设置闪退怎么办,为什么win10的设置有时打不开或者会闪退?。win10一点开设置就闪退?在操作win10系统的时候,有些用户想要对系统中的个方面功能进行修改时,就可

win10

win10系统系统盘共享设置

阅读(86)

本文主要为您介绍win10系统系统盘共享设置,内容包括windows10系统怎样设置共享盘,win10系统怎么设置局域网内磁盘共享,win10系统怎么设置共享文件夹。Win10系统中共享文件夹的操作流程: 在你要共享的文件夹上点右键然后再点【共享】---【特

win10

怎么设置win10我的文档

阅读(84)

本文主要为您介绍怎么设置win10我的文档,内容包括win10怎么在桌面添加我的文档,如何将win10的我的文档改变位置,怎样在win10桌面添加“我的文档”图标。升级win10后部分用户发现桌面没有个人文档,这样不方便我们查看或者添加视频、音乐、图

win10

win10怎么把地区设置为曼谷

阅读(84)

本文主要为您介绍win10怎么把地区设置为曼谷,内容包括玩绝地求生泰服怎么修改本地地址,w10中天气选项中怎么设置城市,win10应用商店怎么切换国家区域。在切换 Windows10 默认显示语言之前必需要安装相应的语言包,如下方法:1按 Windows + I 快

win10

win10如何重新设置硬盘分区大小

阅读(72)

本文主要为您介绍win10如何重新设置硬盘分区大小,内容包括如何调整win10系统硬盘分区大小,win10怎么给分好区的硬盘重新分区?求详细教程,win10系统硬盘分区怎么调整大小。调整win10系统硬盘分区大小步骤如下: 准备工具: u启动U盘启动盘 具体