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;

}

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.SOCKET 缓冲区

按照unix/linux下面socket send的描述,对于非阻塞的socket,如果send时候buffer不足,send会失败 (返回-1)。

按照规矩,windows下的socket接口应该和unix/linux下面的兼容(TCP/IP协议栈就是unix下面开发出来的,而linux下的TCP/IP协议栈则是最标准的可看见源码参考物),所以你的情况应该也是返回失败。另外你说的锁住是对阻塞的socket而言,也就是如果是阻塞的socket,在没有空间的时候,send会被block住,直到socket的缓冲有地方。

4.如何获取SOCKET 发送缓冲区使用大小

解决思路:发送数据存在缓冲区中,我们判断发送缓冲区大小变化,即可获知发送是否成功;具体方法如下:发送数据后,获得已使用缓冲区大小buf,如果buf==0,表示成功,否则,表示未发送;

那么,如何来获得当前已占用发送缓冲区大小?

1. 第一步我们自然想到是否存在这样的sockopt接口

getsockopt(clientSocket, SOL_SOCKET, SO_SNDBUF, (void*)&sendbuflen, &len);

getsockopt中,有参数SO_SNDBUF,貌似是用来获得发送缓冲大小的;

但经过试验,我们发现 无论数据是否发送成功,该值一直不变;

查看内核代码,发现 该参数的含义是 总共的发送缓冲区,包括 已占用 和 空闲的;

2. 第二步,我们发现/proc/net/tcp 中tx_queue大小,即已占用发送缓冲区大小

/proc/net/tcp 中tx_queue 的计算:“tp->write_seq - tp->snd_una”,根据该计算方法,在内核源码中查找,发现内核导出了2个获得已使用发送缓冲的编程接口;

win10如何设置socket缓冲区

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

win10

win10双屏幕设置不一样的壁纸

阅读(44)

本文主要为您介绍win10双屏幕设置不一样的壁纸,内容包括win10双屏怎么设置两个屏幕桌面分别播放不同壁纸?,win10双屏怎么设置两个屏幕桌面分别播放不同壁纸?,win10双屏怎么设置不同的背景?。连接显示器信号线到笔记本的vga接口,打开笔记本显

win10

win10没有激活怎么设置壁纸

阅读(78)

本文主要为您介绍win10没有激活怎么设置壁纸,内容包括win10系统未激活能修改桌面背景吗,未激活的电脑怎么换壁纸,不用激活WIN10系统如何添加桌面图标呢?。已成功激活win10设置添加桌面图标桌面空白处右键鼠标找到个性化设置,点击进入2、在设

win10

win10设置应用默认应用

阅读(53)

本文主要为您介绍win10设置应用默认应用,内容包括win10怎么更改默认应用程序,怎么设置win10搜索默认应用,如何设置win10电脑默认程序。win10更改默认应用程序可以通过自带的“默认程序”来设置软件工具:Win10 1511专业版右击开始菜单选择控

win10

win10某个游戏设置了禁止联网

阅读(47)

本文主要为您介绍win10某个游戏设置了禁止联网,内容包括win10防火墙怎么设置禁止游戏访问网络,怎么用windows禁止某个游戏联网,怎么用windows禁止某个游戏联网。第一步:打开控制面板并打开windows防火墙 第二步:点击“高级设置” 第三步:点击

win10

Win10设置usb断电

阅读(56)

本文主要为您介绍Win10设置usb断电,内容包括Win10开启快速启动后关闭计算机USB仍无法断电该怎么办?,怎么设置让usb鼠标关机后断电,Win10开启快速启动后关闭计算机USB仍无法断电该怎么办。首先,大家需要知道的是,导致以上问题出现的原因主要是

win10

win10按文件夹声音怎么设置

阅读(45)

本文主要为您介绍win10按文件夹声音怎么设置,内容包括win10双击打开文件夹没声音该怎么办,win10系统打开文件夹没有声音怎么办,为什么Win10打开文件夹没有提示音。正常情况下,用户在步骤如下:按下“Win+i”组合键打开【Windwos设置】,点击【个

win10

pe更改win10设置

阅读(46)

本文主要为您介绍pe更改win10设置,内容包括最新版0PE中的Win10PE做了哪些修改,怎么用PE安装win10,怎么把win10pe换掉。win pe 下安装系统的3种方法。1 ,使用分区工具分好区。有移动银盘的情况下,首先把系统镜像文件放到移动硬盘里。用PE光盘,

win10

win10怎么一键设置应用dpi

阅读(65)

本文主要为您介绍win10怎么一键设置应用dpi,内容包括怎样进行Win10软件高DPI设置,win10怎么全部设置高dpi,windows10中如何给单独应用设置DPI缩放。win10最新dpi缩放机制:dpi虚拟化 win10最新dpi缩放机制被windowsvista/win7/win8/win8.1所

win10

win10怎么关安全设置

阅读(53)

本文主要为您介绍win10怎么关安全设置,内容包括win10系统怎么关闭安全模式,求助大佬如何彻底关闭win10更新和安全防护,win10开软件的安全提示怎么关。win10系统关闭windows安全中心服务提醒操作如下: 首先进入win10桌面,右键点击此电脑--管理

win10

win10软件怎么设置开机自启动

阅读(58)

本文主要为您介绍win10软件怎么设置开机自启动,内容包括win10怎么把电脑软件设置为开机自启动,win10怎么把软件设置成开机启动,win10怎样设置一个程序开机自动启动。操作步骤:在Window的文件资源管理器地址输入自启动文件夹地址;C:\ProgramD

win10

电脑win10真彩色设置

阅读(58)

本文主要为您介绍电脑win10真彩色设置,内容包括显示器怎样调真彩色,win10可以调真彩色吗,win10如何添加16位色。右键点击桌面在菜单中选择“屏幕分辨率”;2、打开分辨率设置后,点击“高级设置标签”;3、打开通用即插即用监视器后切换到监视器

win10

win10吃鸡增强脚步声的设置方法

阅读(52)

本文主要为您介绍win10吃鸡增强脚步声的设置方法,内容包括绝地求生Win10脚步声怎么调大,绝地求生怎么把枪声调小脚步声音调大,win10音质增强怎么设置。绝地求生这款游戏对声音的敏感度要求是非常高的,枪声调小,脚步声调大有助于帮你找到和回

win10

win10设置数组越界

阅读(57)

本文主要为您介绍win10设置数组越界,内容包括win101903卸载或更改程序数组越界是啥意思,win10进入设置后无法打开应用,进入安全模式后,进入设置打开应用,win10运行软件出现索引超出数组界限怎么解决?。win10 1903卸载或更改程序数组越界是

win10

win10安装循环出现设置过程

阅读(50)

本文主要为您介绍win10安装循环出现设置过程,内容包括win10安装过程循环,电脑装win10的时候为啥出现这个,无限循环装不了,求大神,求救!!安装Windows10的时候,一直在设置这个页面循环,进不了系。系统安装失败,直接换个验证过的系统盘重装系统

win10

win10双屏幕设置不一样的壁纸

阅读(44)

本文主要为您介绍win10双屏幕设置不一样的壁纸,内容包括win10双屏怎么设置两个屏幕桌面分别播放不同壁纸?,win10双屏怎么设置两个屏幕桌面分别播放不同壁纸?,win10双屏怎么设置不同的背景?。连接显示器信号线到笔记本的vga接口,打开笔记本显

win10

win10没有激活怎么设置壁纸

阅读(78)

本文主要为您介绍win10没有激活怎么设置壁纸,内容包括win10系统未激活能修改桌面背景吗,未激活的电脑怎么换壁纸,不用激活WIN10系统如何添加桌面图标呢?。已成功激活win10设置添加桌面图标桌面空白处右键鼠标找到个性化设置,点击进入2、在设

win10

win10设置应用默认应用

阅读(53)

本文主要为您介绍win10设置应用默认应用,内容包括win10怎么更改默认应用程序,怎么设置win10搜索默认应用,如何设置win10电脑默认程序。win10更改默认应用程序可以通过自带的“默认程序”来设置软件工具:Win10 1511专业版右击开始菜单选择控

win10

win10某个游戏设置了禁止联网

阅读(47)

本文主要为您介绍win10某个游戏设置了禁止联网,内容包括win10防火墙怎么设置禁止游戏访问网络,怎么用windows禁止某个游戏联网,怎么用windows禁止某个游戏联网。第一步:打开控制面板并打开windows防火墙 第二步:点击“高级设置” 第三步:点击

win10

Win10设置usb断电

阅读(56)

本文主要为您介绍Win10设置usb断电,内容包括Win10开启快速启动后关闭计算机USB仍无法断电该怎么办?,怎么设置让usb鼠标关机后断电,Win10开启快速启动后关闭计算机USB仍无法断电该怎么办。首先,大家需要知道的是,导致以上问题出现的原因主要是

win10

win10按文件夹声音怎么设置

阅读(45)

本文主要为您介绍win10按文件夹声音怎么设置,内容包括win10双击打开文件夹没声音该怎么办,win10系统打开文件夹没有声音怎么办,为什么Win10打开文件夹没有提示音。正常情况下,用户在步骤如下:按下“Win+i”组合键打开【Windwos设置】,点击【个

win10

pe更改win10设置

阅读(46)

本文主要为您介绍pe更改win10设置,内容包括最新版0PE中的Win10PE做了哪些修改,怎么用PE安装win10,怎么把win10pe换掉。win pe 下安装系统的3种方法。1 ,使用分区工具分好区。有移动银盘的情况下,首先把系统镜像文件放到移动硬盘里。用PE光盘,

win10

win10设置流量上限时闪退

阅读(69)

本文主要为您介绍win10设置流量上限时闪退,内容包括win10一点开设置就闪退?,你好,win10昨天更新到一半给关机重启了,今天早上卸载了一个文件,为什么win10的设置有时打不开或者会闪退?。win10一点开设置就闪退?在操作win10系统的时候,有些用户