两个简单得要命的问题!简直是白白送分!!!

happy_sea 2005-04-05 06:55:21
用winsock控件编写c/s程序的两个小问题:

1、客户端发出连接请求后,服务端发生了ConnectionRequest事件,那么此时客户端的state是6还是7?
2、如何能检测到服务端或客户端已异常断线呢?
...全文
156 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlum99 2005-04-06
  • 打赏
  • 举报
回复
或者这样也可以,每发送一个包到客户端就要求一个回执,当然这个回执要求是和上一个包相关的.可以是CRC校验码啊什么的.校验失败,或者要求回执超时就认为网络端开.有些游戏就是这么做的.
labixiaoxing 2005-04-06
  • 打赏
  • 举报
回复
7
zyg0 2005-04-06
  • 打赏
  • 举报
回复
ConnectionRequest 没有 append 是6
2、如何能检测到服务端或客户端已异常断线呢?
没有别的办法 做1格心跳程序,服务器给客户端发消息,客户端回应,如果客户端没有回应的话就是断线了
happy_sea 2005-04-06
  • 打赏
  • 举报
回复
我也一直以为只有在服务端accept以后,客户端才会发生connect()事件,但事实上是:客户端1向服务端发出连接请求,服务端不作出反应,此时如果客户端2也向服务端发出请求,服务端accept了客户端2,那么客户端1也会发生connect事件。所以我无法用客户端的connect()事件来判断是否已建立连接,。。。
yorbo 2005-04-06
  • 打赏
  • 举报
回复
偶半桶水都米,SO不晃荡了,顶,我也想晓得
zyg0 2005-04-06
  • 打赏
  • 举报
回复
第一个问题中,如果说客户端发出连接请求后的state是6,为什么又会发生connect()事件呢?
我的客户端在握手时需要发送一些数据,我把它放在connect()事件中,可是发出请求后还没等服务端accept就已经发生了connect(),晕。。。
///服务器accept以后才会发生客户端的connect()
happy_sea 2005-04-06
  • 打赏
  • 举报
回复
。。。。。。。。。。
happy_sea 2005-04-06
  • 打赏
  • 举报
回复
第一个问题中,如果说客户端发出连接请求后的state是6,为什么又会发生connect()事件呢?
我的客户端在握手时需要发送一些数据,我把它放在connect()事件中,可是发出请求后还没等服务端accept就已经发生了connect(),晕。。。
happy_sea 2005-04-05
  • 打赏
  • 举报
回复
http://vbnet.mvps.org/index.html?code/internet/tracerthost.htm
这里面的例子没有用winsock控件啊!
happy_sea 2005-04-05
  • 打赏
  • 举报
回复
还有一个小问题:
服务端objTCP发生ConnectionRequest后,比如requestID=123,我在cmdAccept_Click事件中objTCP.Accept 123为什么不行?Accept只能在ConnectionRequest有效吗?
daisy8675 2005-04-05
  • 打赏
  • 举报
回复
http://vbnet.mvps.org/index.html?code/internet/tracerthost.htm
看下这个例子
daisy8675 2005-04-05
  • 打赏
  • 举报
回复
sckcolsed 0

sckopen 1

sckconnected 7

sckclosing 8

error 9

真是郁闷,现在根本不研究网络,什么都8记得了

问题2的话,试一下winsock close事件,或者用Trim检测state的状态
操作系统的进程中间是用广播

反正你都试下吧
viena 2005-04-05
  • 打赏
  • 举报
回复
白送的分俺不要

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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