用winsock控件编写c/s程序的两个小问题:1、客户端发出连接请求后,服务端发生了ConnectionRequest事件,那么此时客户端的state是6还是7?
2、如何能检测到服务端或客户端已异常断线呢?

解决方案 »

  1.   

    sckcolsed     0sckopen       1sckconnected  7sckclosing    8error         9真是郁闷,现在根本不研究网络,什么都8记得了问题2的话,试一下winsock close事件,或者用Trim检测state的状态
    操作系统的进程中间是用广播反正你都试下吧
      

  2.   

    http://vbnet.mvps.org/index.html?code/internet/tracerthost.htm
    看下这个例子
      

  3.   

    还有一个小问题:
    服务端objTCP发生ConnectionRequest后,比如requestID=123,我在cmdAccept_Click事件中objTCP.Accept 123为什么不行?Accept只能在ConnectionRequest有效吗?
      

  4.   

    http://vbnet.mvps.org/index.html?code/internet/tracerthost.htm
    这里面的例子没有用winsock控件啊!
      

  5.   

    ConnectionRequest 没有 append 是6
    2、如何能检测到服务端或客户端已异常断线呢?
    没有别的办法 做1格心跳程序,服务器给客户端发消息,客户端回应,如果客户端没有回应的话就是断线了
      

  6.   

    或者这样也可以,每发送一个包到客户端就要求一个回执,当然这个回执要求是和上一个包相关的.可以是CRC校验码啊什么的.校验失败,或者要求回执超时就认为网络端开.有些游戏就是这么做的.
      

  7.   

    第一个问题中,如果说客户端发出连接请求后的state是6,为什么又会发生connect()事件呢?
    我的客户端在握手时需要发送一些数据,我把它放在connect()事件中,可是发出请求后还没等服务端accept就已经发生了connect(),晕
      

  8.   

    第一个问题中,如果说客户端发出连接请求后的state是6,为什么又会发生connect()事件呢?
    我的客户端在握手时需要发送一些数据,我把它放在connect()事件中,可是发出请求后还没等服务端accept就已经发生了connect(),晕
    ///服务器accept以后才会发生客户端的connect()
      

  9.   

    我也一直以为只有在服务端accept以后,客户端才会发生connect()事件,但事实上是:客户端1向服务端发出连接请求,服务端不作出反应,此时如果客户端2也向服务端发出请求,服务端accept了客户端2,那么客户端1也会发生connect事件。所以我无法用客户端的connect()事件来判断是否已建立连接,