把WinSock控件放到一个DLL里,然后在外面调用,怎样来控制WinSock控件的状态?

解决方案 »

  1.   

    建一个属性返回WinSock的状态不就行了?
      

  2.   

    可是主程序里和DLL里的操作是同步的,而没有一个等待过程,也就是说,不会等DLL里面执行完才继续,而是会一直执行到过程结束,不能立即得到执行的结果呀?
      

  3.   

    Winsock为什么连接和发送数据不能在一个命令里完成?
    我的思路是在发送数据前先检查是否连接上服务器端,如果没有连接就先连接再发送,可结果这样竟然报错,我检查连接状态值竟然是6,也就是连接中,这是为什么呀?
      

  4.   

    是可以的,
    举例:在某一个Form里,含有wckGet(WinSock控件),SrvHostIP(服务器IP),SrvHostPort(服务器端口),strGet(得到的数据),strSend(发送的数据)
    这个例子的用途是,只要连接上服务器,就立刻发送strSend数据,当服务器发送数据回来时,立刻接受strGet数据,对你也许有点帮助
    Private Sub Form_Load()
        With wckGet
            .RemoteHost = SrvHostIP
            .RemotePort = SrvHostPort
            .Connect
        End With
    End SubPrivate Sub wckGet_Connect()
        wckGet.SendData strSend & vbCrLf
    End SubPrivate Sub wckGet_DataArrival(ByVal bytesTotal As Long)
        wckGet.GetData strGet
        wckGet.Close 
        Unload Me
    End Sub
      

  5.   

    //***************************************
    Private Sub Form_Load()
        With wckGet
            .RemoteHost = SrvHostIP
            .RemotePort = SrvHostPort
            .Connect
        End With
    End SubPrivate Sub wckGet_Connect()
        wckGet.SendData strSend & vbCrLf
    End SubPrivate Sub wckGet_DataArrival(ByVal bytesTotal As Long)
        wckGet.GetData strGet
        wckGet.Close 
        Unload Me
    End Sub
    //***************************************
    上面的代码是不会出问题,可是假如下面这样的话就不一定了,
    因为我发送数据时,并不一定一开始就连接上了。Private Sub Form_Load()End SubPrivate Sub wckGet_Connect()
        With wckGet
            .RemoteHost = SrvHostIP
            .RemotePort = SrvHostPort
            .Connect
        End With
        wckGet.SendData strSend & vbCrLf
    End SubPrivate Sub wckGet_DataArrival(ByVal bytesTotal As Long)
        wckGet.GetData strGet
        wckGet.Close 
        Unload Me
    End Sub