使用vb中的winsock控件建立两台主机的连接,一台客户,一台服务器。客户端发起连接请求使用winsock方法:winsock.connect ;服务端监听请求:winsock.listen
当监听到有连接到来时,触发事件 winsock_ConnectionRequest,
在此事件处理程序中接收联机请求,使用方法:winsock.Accept requestID我想问的是有个事件winsock_connect是这时触发的吗,表示什么意思?我原来问来是这时客户端会触发这个事件,表示连接已经建立,但是我单步调程序时无法触发,全速运行时winsock_connect事件里的程序又已经运行显示出来了,这是为什么呢?恳请大家指点。

解决方案 »

  1.   

    winsock的connect方法会触发connect事件,不管事实上会不会连接成功。
      

  2.   

    具体一点说,谁发起连接,谁发生connect事件,而且不是等对方accept以后才发生的,所以不能用这个事件来判断连接成功。
    另外,被连接的一端不会发生connect事件。
    这是我在单机上测试以后得出的结论,客户端和服务端不是同一台机子时情况或许不同,请朋友们继续补充。
      

  3.   

    摘自MSDN:Connect 事件 (Winsock 控件)
          当一个 Connect 操作完成时发生。语法object.Connect()object 所在处代表一个对象表达式,其值是一个 Winsock 控件。说明使用 Connect 事件确认已经成功建立了一个连接。
      

  4.   

     
    我也是在单机上测试的,发起连接的客户端会发生connect事件,这些我都同意。不过有问题是,为什么我单步调试时,总是不能触发connect事件呢?另外,如果客户端不能通过这个事件判断连接成功,在不是通过另一端给它发送信息告知的情况下,那它有办法知道链接成功吗?
      

  5.   

    可以给connect事件的代码设置断点。单步调试时,有很多在正常运行时会发生的事件都捕捉不到,这很正常。