接受信息:客户端:
Private Sub Command1_Click()
     winsock1.Protocol = sckTCPProtocol
     Winsock1.RemoteHost = "zhang"
     Winsock1.RemotePort = 1002 
     Winsock1.Connect
     Winsock1.SendData Text1.Text
End Sub
服务器端(计算机名:zhang):
Private Sub Form_Load()
    Winsock1.Protocol = sckTCPProtocol
    winsock1.localport=1002
    Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Accept requestID
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData text1, vbString
End Sub我首先运行服务器端,再运行客户端,点command1。
运行后在客户端出现错误,并提示:
run-time error '40006'
wrong protocol or connection state for the requested
transaction or request
同时在服务器端出现错误对话框!

解决方案 »

  1.   

    '试一下这样:客户端:
    Private Sub Command1_Click()
         Dim Start As Single
         winsock1.Protocol = sckTCPProtocol
         Winsock1.RemoteHost = "zhang"
         Winsock1.RemotePort = 1002 
         Winsock1.Connect
         Start = Timer
         Do While Timer < Start + 2'延迟一下,让WINSOCK有时候连接
             DoEvents
         Loop
         Winsock1.SendData Text1.Text
    End Sub
      

  2.   

    再加一个command2控件:
    客户端:
    Private Sub Command1_Click()   '连接
         winsock1.Protocol = sckTCPProtocol
         Winsock1.RemoteHost = "zhang"
         Winsock1.RemotePort = 1002 
         Winsock1.Connect
    End Sub
    Private Sub Command2_Click() '发送数据
         Winsock1.SendData Text1.Text
    End Sub
      

  3.   

    Winsock1.RemoteHost = "127.0.0.1"
    我也试了本机调试,效果一样!
      

  4.   

    to: yassee(甲克虫 - 花开堪折直须折,莫待无花空折枝.) 
    按你说的做后
    点完command1后
    在服务器端出现错误对话框!
    run-time error '40020'
    invalid operation as curent state
      

  5.   

    '试下这个
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
        If Winsock1.State <> sckClosed Then Winsock1.Close
        Winsock1.Accept requestID
    End Sub
      

  6.   

    to:zgzzgz(数码辣椒)
    还是不好使:(
      

  7.   

    要先判断一下,winsock1.state,同上
      

  8.   

    以上方法 只能接受一个连接 然后 就失去作用了 
    正确的做法是加载一个winsock控件 来 accept 请求先把Winsock1 的 index 属性设置为0
     
    Private Sub Winsock1_ConnectionRequest(index as integer ByVal requestID As Long)
        '先查找有没有关闭的winsock 
        dim bFind as boolean,nIndex as integer,nCount as integer
        nCount= Winsock1.count
        for i=0 to nCount-1
            if Winsock1(i).state=sckclosed then
                bFind =true
                nIndex =i
            end if
        next
        '如果没有找到加载一个
        if not bFind then
            load winsock1(nCount)
            nindex =nCount
        end if
        Winsock1(nindex).Accept requestID'接受请求
    End Sub
      

  9.   

    for i=0 to nCount-1
            if Winsock1(i).state=sckclosed then
                bFind =true
                nIndex =i
                exit for '对不起 这里少了一个exit for 一时忘了
            end if
        next
      

  10.   

    我的问题解决了!
    Winsock1.GetData text1, vbString
    winsock1.senddata text1
    这样的语句text1改成变量发送接受就好了!
    如果用text1,后面的参数应该用的设置!
    还是有感谢大家的帮助!!!!!!!!!
      

  11.   

    试一下:
    Private Sub Command1_Click()
         Dim Start As Single
         winsock1.Protocol = sckTCPProtocol
         Winsock1.RemoteHost = "zhang"
         Winsock1.RemotePort = 1002 
         Winsock1.Connect
         Start = Timer
         Do While Timer < Start + 2 And Winsock1.State <> 7 '延迟一下,让WINSOCK有时候连接
             DoEvents
         Loop
         If Winsock1.State <> 7 Then
             MsgBox "Connection Failed!"
             Exit Sub
         End If
         Winsock1.SendData Text1.Text
    End Sub     Winsock1.SendData Text1.Text