问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VC socket 9903 被我close掉了,为什么下次再创建socket,分配的号还是9903,而且里面有数据。

发布网友 发布时间:2022-04-18 14:07

我来回答

1个回答

热心网友 时间:2022-04-18 15:37

1.closesocket(一般不会立即关闭,并经历TIME_WAIT的过程)后想继续重用套接字:
和BOOL bReuseaddr = TRUE;
使用setsockopt(s,SOL_SOCKET,SO_REUSEADDR (为const char *)&bReuseaddr大小(BOOL));
2。已经在强行关闭的连接状态SOKET的调用closesocket关闭没有经历过
TIME_WAIT:
BOOL bDontLinger = FALSE;
使用setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(为const char *)&bDontLinger中,sizeof(BOOL));
的send(),recv()的过程中,有时由于网络条件等原因,不能指望发送和接收,设置发送和接收时间*:
诠释nNetTimeout = 1000 ;/ /秒
/ /发送时间*
使用setsockopt(插座,SOL_S0CKET,SO_SNDTIMEO(char *)的nNetTimeout,是sizeof(int));

/ /接收时间*使用setsockopt(插座,SOL_S0CKET SO_RCVTIMEO,(CHAR *)nNetTimeout,是sizeof(int));
发送()返回实际发送的字节(同步)或发送到socket缓冲区的字节/ (异步);默认状态下,系统发送和接收8688个字节(约8.5K),实际发送数据的过程中
大于套接字缓冲区中的数据可以设置,以避免在send(),RECV ()不断的循环收发器:

/ /接收缓冲区
诠释nRecvBuf = 32 * 1024 ;/ /设置32K
使用setsockopt(s,SOL_SOCKET,SO_RCVBUF,(为const char * )nRecvBuf,是sizeof(int));
/ /发送缓冲地带
诠释nSendBuf = 32 * 1024 ;/ / 32K
使用setsockopt(,SOL_SOCKET在SO_SNDBUF,(为const char *) nSendBuf,是sizeof(int));
发送数据时,他们不希望体验到的系统缓冲区的套接字缓冲区拷贝
程序影响性能:
诠释nZero = 0; BR />使用setsockopt(插座,SOL_S0CKET SO_SNDBUF,(CHAR *)nZero sizeof(nZero)的);
同上。在recv()以上(默认情况下的套接字缓冲区的内容复制到系统缓冲区):
诠释nZero = 0;
setsockopt函数(SO_RCVBUF套接字SOL_S0CKET,(字符*)nZero如sizeof(int));
一般发送UDP数据包,希望套接字发送数据广播的特点:
BOOL bBroadcast = TRUE;
使用setsockopt(SOL_SOCKET,SO_BROADCAST,(S,为const char *)&bBroadcast中,sizeof(BOOL));
8客户端连接到服务器的过程中,如果你是非阻塞模式的socket在connect()
过程中设置连接()延时,直到a*et()被调用(此功能只有在这个过程中的非阻塞
作用显着的作用,在阻塞的函数调用)
BOOL bConditionalAccept = TRUE;

使用setsockopt(s,SOL_SOCKET中,SO_CONDITIONAL_ACCEPT,(为const char *)&bConditionalAccept中,sizeof(BOOL));
在这个过程中,将数据发送(send()方法还没有完成,还没有数据发送)则closesocket()之前,我们
一般采取的措施是“小康”关机(S,SD_BOTH),但肯定是丢失的数据,如何设置程序中的具体应用,以满足<BR / (即没有完成数据发送后关闭套接字)?
结构萦绕{
u_short l_onoff;
u_short l_linger

萦绕m_sLinger;
m_sLinger.l_onoff = 1 ;/ /(在closesocket关闭()调用,但呆在那里时,数据不会被发送后)
/ /。 ,如果m_sLinger.l_onoff = 0,功能和2)的作用是相同的;
m_sLinger.l_linger = 5 ;/ /(允许停留五秒钟)
的setsockopt函数(,,SOL_SOCKET, SO_LINGER,(为const char *)&m_sLinger中,sizeof(流连忘返));
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中堡村村民公约 中港镇中港镇各村情况简介 中堡溪村人口卫生 中堡溪村村情概况 小时代3刺金时代是电影还是电视剧 江苏一氧化二氮气体厂家 原神悬浮小岛怎么上去 原神天衡山天空城上去方法 原神天空城怎么开 天空城进入方法及位置攻略 手机怎么看相册的原图 如何查看微信中图片的原图? 在群里抢优惠券有用没,群发优惠券有用吗,那些内部券不能说的秘密 百度商城的天猫超市优惠券有用吗 农村粮食供应券有用吗? qq游戏里的购物券有用吗? 京东上为什么秒杀时有的产品显示的不是自营而是其他旗舰店? 为什么给别人发信息会出现风险提示? 52减( 8+15怎样列竖式 52减0.52竖式计算 52减(7乘X减X除以3分之1)乘2等于12 小虎在做52减1个小数时,把小数点看错1位,得到36.25,比正确的差小了,正确的差应该 52减6儿童珠心算怎么算 52减什么()除以45等于5? 当当网的购物礼券有用吗? 为什么给别人发信息会出现风险提示? 繁星春水演讲稿400字 52减多少等于1毛4 52减19减29怎么列? 52减多少大于40 支付宝用积分换的购物券有用吗? 莲藕肉末饼的做法,莲藕肉末饼怎么做好吃,莲藕 藕丁肉饼的做法,藕丁肉饼怎么做好吃,藕丁肉饼 过年抢的淘宝券有用吗 朱元璋的免死铁券有用吗,为何说拿了的功臣就没几个善终的? 梦见母亲和妻子生病 159素食餐加蜂蜜水行吗 问一个excel函数返回数字位数的问题 婚外恋怎么相处才能长久 如何实名认证 手机进水后背光不亮怎么办 CncKad2006数控冲床自动编程能自动微连接吗 一个苹果大约多少斤 如何实名认证不要银行卡? 粮改饲政策 债权人可以将利息计入本金吗 删除的语音微信聊天记录能恢复吗 EXCEL2007如何返回特定位的数值 五险一金外地能取吗 手机进水后 屏幕灯和键盘灯不亮了怎么办? 苹果手机的王者荣耀被变小了- 问一问 五险一金可以异地报销吗