社区
网络编程
帖子详情
请教个小问题!关于如何测试某个socket是否处在连接状态?我给出一个笨方法,等待建议
lizhenzhou
2005-02-24 04:21:58
我是这样做的,可以吗?有什么更好的方法测试socket是否好用!多谢,大家!
while(1)
{
iRet = send(ServerSocket,"",0,0);
if(iRet == SOCKET_ERROR)
{
连接socket
}
else
{
通过socket,发送message
}
}
...全文
283
16
打赏
收藏
请教个小问题!关于如何测试某个socket是否处在连接状态?我给出一个笨方法,等待建议
我是这样做的,可以吗?有什么更好的方法测试socket是否好用!多谢,大家! while(1) { iRet = send(ServerSocket,"",0,0); if(iRet == SOCKET_ERROR) { 连接socket } else { 通过socket,发送message } }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lizhenzhou
2005-03-03
打赏
举报
回复
感谢各位,这个问题是初学者很容易碰到的问题啊!
现在boss又在让我发文件啦!困难啊。
我用了2个socket,一个接受文件传输命令,一个接收文件数据。文件数据先发文件属性,再发文件内容,32k一发,这样做可以么
flight_lcf
2005-03-02
打赏
举报
回复
粘包:在每包加入自定义格式,包括长度等等,在解包时,按长度进行读取,循环读取粘到一起的多包不就可以了吗?比如接收到包长为100,是由二包组成,包一为40,包二为60,每包前都有本包长度,这样还解析不出来吗?
明天去抢劫
2005-03-02
打赏
举报
回复
BOOL CSockThread::IsConnected(SOCKET s)
{
int nRet = 0;
struct fd_set Fd_Recv;
struct timeval Time_Recv;
memset(&Fd_Recv, 0, sizeof(struct fd_set));
FD_CLR(s, &Fd_Recv);
FD_SET(s, &Fd_Recv);
Time_Recv.tv_sec = 0;
Time_Recv.tv_usec = 0;
nRet = select(s, &Fd_Recv, NULL, NULL, &Time_Recv);
return (nRet == 0);
}
Practise_Think
2005-03-01
打赏
举报
回复
select 模型也可以用心跳包的!!
lizhenzhou
2005-03-01
打赏
举报
回复
谢谢各位参与,我这样做占用系统资源很大,不要这样做哦!另外一个问题就是,即使在每个包加头,加check,也是会有粘包的问题。
还定时发吧检测连接好。
socket怎么不提供一个检测连接状态的API呢!
谁给Gates打个电话,叫他给一个
zdleek
2005-02-28
打赏
举报
回复
如果发心跳包 通常需要对数据进行编码 就要要规定包的格式
pp_hotel
2005-02-28
打赏
举报
回复
select模型
gzqreder
2005-02-28
打赏
举报
回复
mark,向高人学习
jun_01
2005-02-28
打赏
举报
回复
每个包头都要加长度啊,这样就不怕粘包了
lizhenzhou
2005-02-28
打赏
举报
回复
select模型,怎么可以测试连接状态。多多解释阿
hxzb7215191
2005-02-25
打赏
举报
回复
关注..
的确,如果发心跳包,也会和我们的数据包弄到一块.
这个要如何区别呢?
lizhenzhou
2005-02-25
打赏
举报
回复
谢谢各位!
再问,如果短时间内不断发送数据包,会和正常有意义的数据包连在一起,造成“粘包”,向我现在这样发送空数据包可以吗?send(socketID,“”,0,0);
clovexmu
2005-02-24
打赏
举报
回复
每隔一段时间客户端向服务器端发送一个数据包,如果服务器在给定时间内检测不到这个数据包,则认为网络超时。
TCP/ip协议本身并没有进行检测网络是否保持连接的机制,所以需要在应用层自己写代码检验。
gdy119
2005-02-24
打赏
举报
回复
心跳包,也是发送数据包,是c/s双方都在指定的时间内
互相发送数据报,验证网络是否保持连接
lizhenzhou
2005-02-24
打赏
举报
回复
心跳包,是什么意思啊?请fisker0303解释阿,多谢
菲斯可儿
2005-02-24
打赏
举报
回复
可以用发心跳包的方式。
C#怎么判断
一个
Socket
是否
连接
本文介绍了
一个
高效的
Socket
连接
状态
判断
方法
,通过发送数据包并捕获
Socket
Exception来确定
Socket
是否
仍处于
连接
状态
。此
方法
适用于多线程环境中实时更新在线
Socket
的
状态
。
如何判断
socket
是否
还处于
连接
状态
?
本文探讨了如何判断
socket
连接
状态
,包括利用心跳包维持
连接
和通过API如getsockopt的错误码
测试
连接
是否
断开。同时介绍了设置
socket
为非阻塞或设置接收超时(SO_RCVTIMEO)来检测
连接
的有效性。
java
测试
rtsp地址
连接
状态
,
测试
RTSP
连接
状态
是否
成功,java如何
测试
rtsp地址
连接
是否
成功
RTSPUtils类实现了
一个
方法
用于检查给定RTSPURL的
连接
状态
,通过
Socket
连接
并设置10秒超时时间。在main
方法
中进行了示例调用。
Java
Socket
连接
状态
管理
Java客户端使用
Socket
通信时需管理
连接
状态
,通过周期性发送心跳包来检测
连接
是否
断开。当检测到写数据异常时,如'Broken pipe',才确认
连接
已断开并执行重连操作。
测试
案例显示,服务端在收到特定指令后关闭
连接
,客户端需通过后续心跳包发送失败来感知这一变化。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章