请教个小问题!关于如何测试某个socket是否处在连接状态?我给出一个笨方法,等待建议

lizhenzhou 2005-02-24 04:21:58
我是这样做的,可以吗?有什么更好的方法测试socket是否好用!多谢,大家!
while(1)
{
iRet = send(ServerSocket,"",0,0);
if(iRet == SOCKET_ERROR)
{
连接socket
}
else
{
通过socket,发送message
}
}
...全文
256 16 打赏 收藏 转发到动态 举报
写回复
用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解释阿,多谢
fisker0303 2005-02-24
  • 打赏
  • 举报
回复
可以用发心跳包的方式。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧