博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HawkNL 源码剖析
阅读量:4670 次
发布时间:2019-06-09

本文共 1290 字,大约阅读时间需要 4 分钟。

1 void sock_Close(NLsocket socket)  2 {
3 nl_socket_t *sock = nlSockets[socket]; 4 struct ip_mreq mreq; 5 6 if(sock->type == NL_UDP_MULTICAST) 7 {
8 /* leave the multicast group */ 9 mreq.imr_multiaddr.s_addr = ((struct sockaddr_in *)&sock->addressout)->sin_addr.s_addr; 10 mreq.imr_interface.s_addr = bindaddress; 11 12 (void)setsockopt((SOCKET)sock->realsocket, IPPROTO_IP, IP_DROP_MEMBERSHIP, 13 (char *)&mreq, (int)sizeof(mreq)); 14 } 15 if(sock->type == NL_RELIABLE_PACKETS) 16 {
17 /* check for unsent data */ 18 if(sock->sendlen > 0) 19 {
20 int tries = 200; 21 22 /* 200 * 50 ms = up to a 10 second delay to allow data to be sent */ 23 while(tries-- > 0 && sock->sendlen > 0) 24 {
25 htThreadSleep(50); 26 } 27 } 28 sock_DeleteSocket(socket); 29 } 30 if((sock->type == NL_RELIABLE_PACKETS || sock->type == NL_RELIABLE) && sock->listen == NL_FALSE) 31 {
32 struct linger l = {
1, 10};//延迟10s 33 34 (void)setsockopt((SOCKET)sock->realsocket, SOL_SOCKET, SO_LINGER, (const char *)&l, (int)sizeof(l)); 35 (void)shutdown((SOCKET)sock->realsocket, SD_RECEIVE); 36 } 37 else 38 {
39 (void)shutdown((SOCKET)sock->realsocket, SD_BOTH); 40 } 41 (void)closesocket((SOCKET)sock->realsocket); 42 }

转载于:https://www.cnblogs.com/kanego/archive/2012/04/07/2436408.html

你可能感兴趣的文章
mybatis 复习笔记03
查看>>
zoj 3703(背包)
查看>>
一种新的子波域滤波算法
查看>>
cookie之三天免登录代码
查看>>
1043 幸运号码 数位DP
查看>>
js18
查看>>
2018-2019-2 20175308实验一 《Java开发环境的熟悉》实验报告
查看>>
如何设置WIN7自动登录(去除登录密码)
查看>>
关于bash中if语法结构的广泛误解(转)
查看>>
10G整数文件中寻找中位数或者第K大数
查看>>
操作手机数据库的uri
查看>>
Python小应用1 - 抓取网页中的链接地址
查看>>
HTML表格和列表笔记&练习<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于表格的一些练...
查看>>
Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)
查看>>
数据类型
查看>>
SharePoint 2010中的内容类型集线器 - 内容类型发布与订阅
查看>>
如何解决在Windows Server 2008 R2 上安装证书服务重启后出现 CertificationAuthority 91错误事件...
查看>>
c# 获取键盘的输入
查看>>
mysql忘记密码
查看>>
小股神助A股股民畅享经济发展红利
查看>>