服务端:
Private Sub Form_Load()
Server_socket.LocalPort = 1234
Server_socket.Listen
MsgBox Server_socket.State
End SubPrivate Sub Server_socket_ConnectionRequest(ByVal requestID As Long)
If Server_socket.State <> sckClosed Then
Server_socket.Close
End If
Server_socket.Accept requestID
If Err Then
MsgBox Error
End If
End SubPrivate Sub Server_socket_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Server_socket.GetData str
End Sub
客户端:
Private Sub Form_Load()
Client.RemoteHost = "sakas"
Client.RemotePort = 1234
End SubPrivate Sub cmdSendData_Click()
MsgBox Client.State
If Client.State = sckConnected Then
Client.SendData "ddd"
End If
End SubPrivate Sub cmdconnect_Click()
Client.Connect
MsgBox Client.State
End Sub
问题是 怎么客户端连不上服务器呢?

解决方案 »

  1.   

    这个代码需要 服务器先启动,然后启动客户端 ,客户端cmdconnect只能按1次,2个就可以通信了
    代码没看出来有什么问题
    Client.RemoteHost = "sakas"最好用ip地址不要用机器名 2个机器要在一个网段中
      

  2.   

    我是先启动服务端的 但测试是 客户端正在连接服务端 也就是客户端的状态Client.State一直等于6 不等于7
      

  3.   

    还是有个问题  在生成.exe文件后 运行是正常的  如果不生成.exe就不能正常运行  怎么回事啊
      

  4.   

    如果我不用控件 服务端怎么接受数据服务端
    Dim Server_winsock As New Winsock
    Private Sub Form_Load()
    Server_winsock.LocalPort = 1001
    Server_winsock.Listen
    Server_winsock.Accept 403
    End Sub客户端
    Dim client_winsock As New WinsockPrivate Sub Form_Load()
    client_winsock.RemoteHost = "sakas"
    client_winsock.RemotePort = 1001
    End SubPrivate Sub cmdConnect_Click()
    client_winsock.Connect
    MsgBox client_winsock.State
    End SubPrivate Sub cmdSendDate_Click()
    MsgBox client_winsock.State
    If client_winsock.State = sckConnected Then
     client_winsock.SendData "gcb"
    End If
    End Sub
    怎么连接呢
      

  5.   

    Private WithEvents Server_winsock As New Winsock
    ...
    Private WithEvents client_winsock As New Winsock
    ...看看
      

  6.   

    服务端修改如下:Private WithEvents Server_winsock As Winsock
    Set Server_winsock = New WinsockPrivate Sub Form_Load()
    Server_winsock.LocalPort = 1001
    Server_winsock.Listen
    End SubPrivate Sub Server_winsock_ConnectionRequest(ByVal requestID As Long)
    If Server_winsock.State <> sckClosed Then
    Server_winsock.Close
    End If
    Server_winsock.Accept requestID
    MsgBox requestID
    If Err Then
    MsgBox requestID
    End If
    End SubPrivate Sub Server_winsock_DataArrival(ByVal bytesTotal As Long)
    Dim str As String
    Server_winsock.GetData str
    MsgBox str
    End Sub
    但报错 显示:
    Server_winsock.LocalPort = 1001  这句有问题  对象变量未设置
      

  7.   

    我以前试验过,不用控件不好用除非完全采用api那样代码量就太大了
      

  8.   

    已经解决啦  这一句 Set Server_winsock = New Winsock  放到Form_Load里就可以了