我在用VB试着写一个股票程序,有一个服务器端,用于发送股票随机价格和成交量,一个客户端用于接受价格和成交量两个数据,并实时画走势图,采用的控件是Microsoft Winsock Control 6.0,用TCP协议连接,但每次运行服务器端程序,要发送数据时,VB总是提示出错:
实时错误'40006'
Wrong protocol or connection state for the requested transaction or request
请大侠们帮帮我,十分感谢!!!并大量分值赠送(不够再补)

解决方案 »

  1.   

    你的客户程序还没有同服务器连接好你就使用了SendData语句,如类似下面的语句: 
        socClient.Connect sServer 
        socClient.SendData txtSend.Text     调用了Connect语句后,控件立即返回,此时连接尚未建立。你应该在socClient_Connect事件中使用socClient.SendData txtSend.Text。 
      

  2.   

    需要等客户端Accept该连接请求后,服务端收到产生Connect事件,在该事件中发送数据,例如:
    Private Sub Winsock1_Connect()
    If Winsock1.State = 7 Then Winsock1.SendData txtSend.Text
    End Sub
      

  3.   

    Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
        On Error Resume Next
        Dim I As Integer
        Dim ClientData As Variant
        Winsock1(Index).GetData ClientData, vbString
        Text1.Text = Text1.Text & ClientData & vbCrLf
        For I = 1 To Clients
            If Winsock1(I).State = sckConnected Then
                Winsock1(I).SendData ClientData
                DoEvents
            End If
        Next
    End Sub
      

  4.   

    等待用户连结
    Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
        Dim I As Integer
        Dim Temps As Integer
        For I = 1 To Clients
            If Winsock1(I).State = sckClosed Then
                Winsock1(I).Accept requestID
                Temps = I
                Exit For
            End If
        Next
    End Sub
      

  5.   

    确保连接建立好了,你可以在accept之后,进行状态判断,然后进行相应操作
      

  6.   

    If Winsock1.State = 7 Then
            Winsock1.SendData QueryStr
    Else
            msgbox("连接失败")
    End If