server还少了这块代码:
Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)
  If tcpServer.State <> sckClosed Then tcpServer.Close
  tcpServer.Accept requestID
End Sub
多读msdn,就明白了.

解决方案 »

  1.   

    加一个winsock控件的状态判断即可,客户端的winsock也要加
    Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        if TcpServer.State=7 then
           tcpServer.GetData strData
           Text1.Text = strData
        endif
    End Sub
      

  2.   

    服务器端要使用requestID语句,并且这个WINSOCK控件不能是发送和接受字符的那个控件!
      

  3.   

    注意要先打开服务器端程序,再打开客户端程序.
    另还得像楼上几位所说的加上应有的判断
    Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        if TcpServer.State=7 then
           tcpServer.GetData strData
           Text1.Text = strData
        endif
    End Sub
      

  4.   

    还是不行,错误号相同。请兄弟们帮帮我。
    客户端EXE,FORM中有一个WINSOCK组件tcpClient和command组件:
    Private Sub Command1_Click()
        tcpClient.SendData "are you ok?"
    End SubPrivate Sub Form_Load()
        tcpClient.RemotePort = 1001
        tcpClient.RemoteHost = "192.168.168.100"
        tcpClient.Connect
    End Sub服务器端EXE,FORM中有一个WINSOCK组件tcpServer和text组件:
    Private Sub Form_Load()
        tcpServer.LocalPort = 1001
        tcpServer.Listen
    End SubPrivate Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        If tcpServer.State = 7 Then
           tcpServer.GetData strData
           Text1.Text = strData
        End If
    End Sub
    Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
      If tcpServer.State <> sckClosed Then tcpServer.Close
      tcpServer.Accept requestID
    End Sub
    我是运行Server.exe,然后再打开的Client.exe。
    后来我放在同一个窗体上放了两个winsock,运行这些代码也不行。
      

  5.   

    在客户端将remotehost设置为服务器的机器名试试
    再或者将winsock.connect放在另外的一个按钮click事件中试试
      

  6.   

    你的操作系统不会还是win95吧?
      

  7.   


    Private Sub Form_Load()
        tcpClient.RemotePort = 1001
        tcpClient.RemoteHost = "192.168.168.100"
        tcpClient.Connect
    End Sub
    改为:
      Private Sub Form_Load()
        tcpClient.RemotePort = 1001
        tcpClient.RemoteHost = "192.168.168.100"
        IF tcpClient.state=0 then
          tcpClient.Connect
        end if
    End Sub
    另外,程序结束后最好关闭连接,
        tcpClient.Protocol=0
    你的问题我也遇到过,大概是因为连接后未关闭又去连接造成的,另外,跟踪是那条
    语句出错了,给你我的代码.
    客户端Private Sub Form_Load()
         '客户端的winsock控件初始化    If WinSockInitial(WinsockForChatInClient, sckTCPProtocol,"192.168.3.31", 1000) = False Then
          MsgBox "连接失败"
          Exit Sub
        End If
        
       '与服务器建立连接
       If WinsockForChatInClient.State = 0 Then
          WinsockForChatInClient.Connect
       End If
    End SubFunction WinSockInitial(ByVal WinSock As WinSock, ByVal IntProtocol As Integer, ByVal StrHost As Variant, ByVal IntPort As Integer) As Boolean   'winsock控件初始化(协议,连接主机,连接的端口号),
     
       '初始化0—'''''''''''''''''''''''''''''''''
       On Error GoTo localerror
       
       '初始化
       WinSockInitial = True
       WinSock.Close
         '
      WinSock.Protocol = IntProtocol
       WinSock.RemoteHost = StrHost
       WinSock.RemotePort = IntPort
      End FunctionPrivate Sub Form_Unload(Cancel As Integer)
        WinsockForChatInClient.Close
    End SubPrivate Sub TxtForSend_KeyDown(KeyCode As Integer, Shift As Integer)
      
       '在文本(框TxtForSend)中输入数据再按回车发送数据到服务器
        If KeyCode = vbKeyReturn Then
          WinsockForChatInClient.SendData TxtForSend.Text
       End If
    '服务端(winsock 控件WinsockForChatInServe和文本框TxtForGetData)Private Sub WinsockForChatInServer_ConnectionRequest(ByVal requestID As Long)
        ''接受请求
        If WinsockForChatInServer.State <> sckClosed Then
           WinsockForChatInServer.Close
        End If
        WinsockForChatInServer.Accept requestIDEnd SubPrivate Sub WinsockForChatInServer_DataArrival(ByVal bytesTotal As Long)
        WinsockForChatInServer.GetData strData, vbString
        TxtForGetData.Text = TxtForGetData.Text + strData
    End SubPrivate Sub Form_Load()
      ''服务端的winsock控件初始化
        Dim ServerIp As String
        If WinSockInitial(WinsockForChatInServer, sckTCPProtocol, "", 1000) = False Then
          MsgBox "连接失败"
          Exit Sub
        End If
        
       '扫描各客户端,检查是否有连接请求
        WinsockForChatInServer.Listen
     End SubFunction WinSockInitial(ByVal WinSock As WinSock, ByVal IntProtocol As Integer, ByVal StrHost As Variant, ByVal IntPort As Integer) As Boolean
      
       'winsock控件初始化(连接的端口号),
       WinSock.LocalPort = IntPort
     End Function
      

  8.   

    问题如上,我用单步跟踪,执行到语句:
    tcpClient.SendData "are you ok?"
    出现这个错误号。
    按照audio兄的提示,我重写客户端代码,如下
    Private Sub Form_Load()
        If WinSockInitial(tcpClient, sckTCPProtocol, "192.168.168.200", 1001) = False Then
          MsgBox "连接失败"
          Exit Sub
        End If
        If tcpClient.State = 0 Then
          tcpClient.Connect
        End If
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
        tcpClient.Close
    End SubFunction WinSockInitial(ByVal WinSock As WinSock, ByVal IntProtocol As Integer, ByVal StrHost As Variant, ByVal IntPort As Integer) As Boolean
       WinSockInitial = True
       WinSock.Close
       WinSock.Protocol = IntProtocol
       WinSock.RemoteHost = StrHost
       WinSock.RemotePort = IntPort
       On Error GoTo localerror
       WinSock.Connect
    localerror:
       WinSockInitial = False
    End Function
    还是不行,我怀疑是不是tcpClient.connect根本就没有连接上服务器
    如果是这样,如何处理?
    我的运行环境是win2000(AS)+vb6中文版。
      

  9.   

    多谢各位兄弟帮忙,小弟已经调通程序,
    问题就在没有connect到服务端,就调用senddata方法,
    故出错,看来以后,要经常看MSDN。