用 TCP 应该可以连上!
能不能把你的原码发上来。也许只是一两个字符写错的之类的小问题.

解决方案 »

  1.   

    你可以用udp试试,用tcp因该可以,对了最好把代码发过来看一下.还有给的错误提示事什么?
      

  2.   

    用TCP可以,我有一个做成的例子。
      

  3.   

    用WINSOCK控件,或是管道,都可以
      

  4.   

    服务器程序:
    在服务器的启动过程中加入以下两行:
    WSKserVer.localPort=1024
    WskServer.listrenprivate sub wskServer_RequistAccept(RequistId as long)
      if wskServer.State<>0 then WskServer.Close
      wskserver.Accept Requistid
    end sub客户机程序:
    在客户程序的启动过程中加入以下三行.
    wskClient.RemoteIP="192.1.2.52"(也许不需要引号,我平时是直接用计算机名的)
    wskClient.RemotePort=1024
    wskClient.connect
      

  5.   

    我看到的代码有一个小问题,第二行 Listen 写错了,不过在 VB 中这样的错误会提示,可能是因为这些代码不是拷贝过来的。我觉得上面的代码从总体上讲没有问题,你检查一下看看你的程序中有没有输入时的错误。看看你的两个 WinSock 控件是不是都用的 TCP 协议。试着 ping 一下,看看两台机子能不能连上。最后,服务器必须先于客户机启动。
      

  6.   


    '主机(34a-4)程序如下
    Private all As String
    Private Sub Form_Load() wskServer.LocalPort = 1024
     wskServer.Listen
     
      '出现服务器的IP地址是:192.1.2.51
      '    服务器的名称是:34a-4
     MsgBox "服务器的IP地址是" & wskServer.LocalIP & vbCrLf & _
            "服务器的名称是:" & wskServer.LocalHostNameEnd Sub
    Private Sub Form_Unload(Cancel As Integer)
      
      If wskServer.State <> sckClosed Then wskServer.Close
      
    End Sub
    Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)
       
       If wskServer.State <> sckClosed Then wskServer.Close
       wskServer.Accept requestID
       
    End SubPrivate Sub wskServer_DataArrival(ByVal bytesTotal As Long)
       
       Dim Received As String
       wskServer.GetData Received, vbString
       Received = Trim$(Received) & ".TXT"
       Data1.Recordset.MoveFirst
       Data1.Recordset.FindFirst "SerialNum='" & Received & "'"
       If Data1.Recordset.NoMatch Then
          all = "aaaa"
       Else
          all = Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text
       End If
       wskServer.SendData all
    End Sub
    我在客机(34a-2)程序.Private all As String
    Private Sub cmdSendData_Click()
     
     If Text0.Text <> "" Then
        sckClient.SendData Text0.Text
     Else
        MsgBox "传输的数据不能为空!"
     End If
     
    End SubPrivate Sub Form_Load()
     'sckClient.RemoteHost = "34a-4"
     'sckClient.LocalPort = 1024
     'sckClient.Connet         '用这种方式联接,则出现错误提示
     sckClient.Protocol = sckTCPProtocol
     sckClient.Connect "34a-4", 1024  '这样没有错误提示,但又提示无法连接到
                                      '服务器
                                     '指定192.1.2.51也是一样的结果
     Do
     DoEvents
     Loop Until sckClient.State = sckConnected Or sckClient.State = sckError
     
     If sckClient.State = sckError Then
        MsgBox "无法连接到服务器:" & sckClient.RemoteHostIP
        'cmdSendData.Enabled = False
     Else
        MsgBox "成功连接到报务器:" & sckClient.RemoteHostIP
     End If
     
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      
      If sckClient.State <> sckClosed Then sckClient.Close
      
    End SubPrivate Sub sckClient_DataArrival(ByVal bytesTotal As Long)
       
       Dim Received As String
       sckClient.GetData Received, vbString
       Text1.Text = Received
       
    End Sub'但我在同一台机子里运行这两个程序,即在34a-4机子里先运行Server,再运行Protocol.就能正常连接.
    '注:我在两台机子里试验时,都是先运行Server,再运行Protocol.而且在网上邻居
    '里两台机子都能互相看到对方
      

  7.   

    把sckClient.Protocol = sckTCPProtocol写在最前面再试试用IP