社区
网络编程
帖子详情
如何判断一个SOCKET句柄对应的连接是否有效?
skt01
2003-09-08 11:39:17
如何判断一个SOCKET句柄对应的连接是否有效?我需要定时检查SOCKET的连接是否仍然有效,我用的SDK,不是MFC类
...全文
392
6
打赏
收藏
如何判断一个SOCKET句柄对应的连接是否有效?
如何判断一个SOCKET句柄对应的连接是否有效?我需要定时检查SOCKET的连接是否仍然有效,我用的SDK,不是MFC类
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
skt01
2003-09-12
打赏
举报
回复
多谢各位了,不过我不想用异步的方式
river_side
2003-09-08
打赏
举报
回复
连接之前设置pSocket = INVALID_SOCKET
连接时用WSAAsyncSelect(m_Socket, m_hWnd, WM_SOCKET_CLOSE, FD_CLOSE)
使本地在对方关闭SOCKET时设置pSocket = INVALID_SOCKET
再你发送数据时你只要检测pSocket 是否等于 INVALID_SOCKET就行
fanfyj
2003-09-08
打赏
举报
回复
判断if(pSocket == NULL)
SeekTruth
2003-09-08
打赏
举报
回复
在该句柄上进行操作,检查返回信息.
ProgrameMan
2003-09-08
打赏
举报
回复
如果是TCP连接最好办,发送一个校验数据报,发送没有失败则说明连接有效
如果是UDP定时向远端计算机发送一个校验包,远端给一个回应,如果在特定时间内没有接收到应答则可以认为连接无效了(最好有失败从发的机制例如从发3次)
xiaohedou
2003-09-08
打赏
举报
回复
对检查pSocket ?= INVALID_SOCKET 就可以
socket
编程(源码)
本资料提供的是用
Socket
编程实现聊天程序。 有两种:流式
Socket
(SOCK_STREAM)和数据报式
Socket
(SOCK_DGRAM)。流式是一种面向
连接
的
Socket
,针对于面向
连接
的TCP服务应用;数据报式
Socket
是一种无
连接
的
Socket
,
对应
于无
连接
的UDP服务应用。
Socket
为了建立
Socket
,程序可以调用
Socket
函数,该函数返回
一个
类似于文件描述符的
句柄
。
socket
函数原型为:int
socket
(int domain, int type, int protocol);domain指明所使用的协议族,通常为AF_INET,表示互联网协议族(TCP/IP协议族);type参数指定
socket
的类型:SOCK_STREAM 或SOCK_DGRAM,
Socket
接口还定义了原始
Socket
(SOCK_RAW),允许程序使用低层协议;protocol通常赋值0。
Socket
()调用返回
一个
整型
socket
描述符,你可以在后面的调用使用它。
Socket
描述符是
一个
指向内部数据结构的指针,它指向描述符表入口。调用
Socket
函数时,
socket
执行体将建立
一个
Socket
,实际上"建立
一个
Socket
"意味着为
一个
Socket
数据结构分配存储空间。
Socket
执行体为你管理描述符表。两个网络程序之间的
一个
网络
连接
包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。
Socket
数据结构中包含这五种信息。
socket
在测量软件中的使用也很广泛
代码客:G-
Socket
(IOCP) 1.0 (Server/Client)例程源码+Server体验程序+强大的压力测试工具
结构层次及相互联系 (1)、工作线程:响应
连接
的IO投递返回并负责投递读请求,并将IO返回结果投递给处理线程,可设定参数决定工作线程数量; (2)、处理线程:处理线程调用回调函数将信息传递给应用层或协议栈,可设定参数决定工作处理数量; (3)、看守线程:响应Accept事件调用AcceptEx,检测
连接
和心跳超时 ,将信息投递给工作线程,模块仅有
一个
看守线程。 1. 技术要求 (1)、线程同步:Lock指令、临界段; (2)、主要
Socket
API:WSASend、WSARecv、AcceptEx、DisconnectEx; (3)、内存管理:
连接
池(
句柄
重用)、内存池; (4)、数据0拷贝:通过内置处理线程,上层应用可以避免自建线程池及复制数据的过程。同时提供GBuf内存分配功能,应用层获得分配地址及填充数据之后亦可直接投递给内核/驱动层; (5)、数据顺序同步:同
一个
连接
同时只有
一个
处理线程响应其IO事件; (6)、IO请求投递:单投递读、多投递写; (7)、0缓冲读投递:可条件编译实现,以适用大规模
连接
要求。 (8)、超时机制:可设置空
连接
(
连接
不发送数据)超时时间以防止DOS攻击,也可设置心跳超时时间防止网络故障导致的现有
连接
成为虚
连接
避免耗尽系统资源。 (9)、接口技术:API、回调函数、客户
句柄
(客户
连接
句柄
)。 (10)、主、被动发送:不使用HASH、MAP及LIST技术,即可提供安全可靠高效的客户
连接
句柄
,以实现服务器端主被动发送数据功能; (11)、PerHandleData的回收不以IO投递的计数器或链表来做依据但仍能安全回收,同时尽量避免在高频的读写操作时做其他无关的操作以提高读写效率。 (12)、处理线程和工作线程有着良好分工界限,繁重的工作交给处理线程完成,工作线程工作量最大限度的减少,仅响应投递返回及读投递的操作; (13)、支持AWE,模块自动识别AWE
是否
开启(需手动开启),“否”则使用虚拟内存机制。 2. 功能要求 (1)、多IP多端口监听,每个监听可设置不同的回调函数,以高效的区别处理数据 (2)、可设置每秒最大的
连接
并发量和空
连接
(
连接
不发数据)超时时间以防止DOS攻击造成的服务瘫痪、具有心跳处理(防网络异常造成的虚
连接
)功能 (3)、不加协议的透明传输,可适用广泛的网络通讯环境 (4)、可现实主、被动发送数据,但不会因兼顾主动发送而额外增加降低效率的工作 (5)、内置处理线程,上层应用可不必自建线程池处理数据,所有IO事件按顺序调用回调函数并可以在回调函数内直接处理数据,不必担心多线程造成的接收数据乱序的问题。 (6)、高效率的数据
对应
关联机制,在初次
连接
并根据登录数据设置每个
连接
对应
的宿主(Owner)之后,再接收的数据即可立即获得该
连接
对应
的宿主,而不必再做额外的查询工作,并且模块内部采用的是指针关联方式,对于长
连接
、主动发送的服务器系统而言是高效率的。 (7)、可兼容IPv6 3. 注意事项 因硬件环境和应用环境不同,不合理的配置会出现效率及性能上的问题,因此以下情况出现时,请务必与作者联系以确保获得更好的参数配置: (1)、
连接
量超过1000个的。超过的应结合具体硬件配置和网络带宽等因素综合设定运行参数。 (2)、带宽使用率超过20%的。工作线程和处理线程数量的设置也是综合考虑数据吞吐量和数据处理负载的因素来设置的,过多的线程会在调度上浪费时间,同时也应该综合考虑线程优先级别来设置工作线程和处理线程数量,两者的设置也不一定能相等。 (3)、服务器端有主动发送需求的、短
连接
(含网络故障造成的
连接
断开)出现频率高的。 压力测试工具介绍: 一、 使用G-TcpClient模块 二、 可以设定间隔时间发起大规模长、短
连接
三、 可以发起密集数据包,包括即时和定时发送,1M的光纤带宽最大可以达到100K/S(单向)以上,100M本地网最大可以达到10M/S(单向)以上 四、 数据发送仅由
一个
独立线程但当,每点击一次Connect就创建
一个
线程根据当前参数发起
连接
。 五、 测试前提:服务器接收客户端数据后立即原样返回给客户端
MT5 非区间均线回归刷单EA教学
1.主要面向有一定基础的学员;2.想编写EA苦于不知道如何下手的学员!3.能看懂代码的学员!4.不啰嗦直接上干货!5.固定框架式编程!6.面向对象,面向函数式编程!//--- 交易.追踪止损(Symbol(),追踪点值,magic号码); 指标.
句柄
至数组(指标.
句柄
A,小均值,0,iBars(Symbol(),应用周期),true); 指标.
句柄
至数组(指标.
句柄
B,大均值,0,iBars(Symbol(),应用周期),true);//---非区间 double 区间最高价= 数据.求区间最高价(Symbol(),应用周期,MODE_CLOSE,0,区间根数); double 区间最低价= 数据.求区间最低价(Symbol(),应用周期,MODE_CLOSE,0,区间根数); bool 包裹均线=小均值[0]区间最低价&&大均值[0]区间最低价;
linux
socket
句柄
泄露,
socket
句柄
泄漏问题的定位: losf和strace的联合使用!
最近遇到
一个
socket
句柄
泄漏的问题, 我们来简要说说如何定位:1. 确定哪个进程在泄漏, 可以用命令 lsof -n|awk '{print $2}'| sort | uniq -c | sort -nr | head ,这个命令找的是打开
句柄
数目最多的进程, 多敲入几次, 就知道是那个进程在增长了。 而且累积到一定阶段, 泄漏的进程打开的
句柄
数会增长。 此步骤可以找到泄漏的进程号xx...
socket
的
句柄
属性设置
Socket
一些属性设置记录标记window/linux设置方法,如果没标记则是不同系统下设置都相同。 udp/tcp 共有的属性 FIONBIO 设置
socket
是否
为阻塞非阻塞模式,默认创建的
socket
是阻塞模式。 设置非阻塞模式: dwOn = true; window: ioctl
socket
(m_h
Socket
, FIONBIO, &dwOn); linux...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章