想问一下 在tcp下是不是就用不指定localhost,localip什么的,具体的我用?//在程序里注释了,清大家帮我指点一二!
Private Sub Form_Load()
    ' 使用 TCP Protocol
    WskServer.Protocol = sckTCPProtocol             
    ' 设置本 Server 的 IP地址
    txtServerIP = WskServer.LocalIP     ?//是不是只要是sckTCPProtocol,就自动取得localIP,不需要在指定?End SubPrivate Sub WskServer_ConnectionRequest(ByVal requestID As Long)
    If WskServer.State = sckConnected Then
        MsgBox "Server is already connected!", vbCritical
        Exit Sub
    End If
    WskServer.Close               ?//为什么这里就要关闭了?那下边怎么还可以执行accept?
  ' 接受来自 Client 端的请求
    WskServer.Accept requestID
    lblServerStatus = "Processing Connection."
    lstServerLog.AddItem Time & " - " & "Client Connected"
  ' 传送信息回 Client 端
    WskServer.SendData "CLOSE"
    DoEvents
    WskServer.Close
    cmdListen.Enabled = True
    lblServerStatus = "Server Idle"
End Sub在客户端
Private Sub Form_Load()
      WskClient.Protocol = sckTCPProtocol ?//这里是不是真的可以不像udp一样需要指定主机,端口?是在程序执行的时候再指定么?
End Sub

解决方案 »

  1.   

    objTCP是winsock控件Private Sub Form_Load()
        ' 使用 TCP Protocol
        WskServer.Protocol = sckTCPProtocol                 objTCP(intmax).LocalPort = 1001  '用于客户端连接用
        objTCP(intmax).Listen             '舰艇客户端的连接End SubPrivate Sub WskServer_ConnectionRequest(ByVal requestID As Long)
        If WskServer.State = sckConnected Then
            MsgBox "Server is already connected!", vbCritical
            Exit Sub
        End If
    End Sub在客户端
    Private Sub Form_Load()
          WskClient.Protocol = sckTCPProtocol ?//这里是不是真的可以不像udp一样需要指定主机,端口?是在程序执行的时候再指定么?
          With objTCP
            .RemotePort = 1001     '设置为服务端的ip地址
            .RemoteHost = Me.txtRemoteComputer.Text    '连接的主机名
            .Connect
          End With
    End Sub
      

  2.   

    楼上你 你好
    按着你说的就是说也要事先设好remoteport  and  remotehost在client端
    而在server只要设localport而不用localhost?or localIP?
      

  3.   

    另外在提一个问题
    Private  Type  ActiveUser    
      ClientIP  As  String  ’记录客户的IP地址    
     
       ClientPort  As  Integer  ’记录当前会话的端口    
     
        ClientID  As  Long  ’记录客户的ID号码    
     
       ClientConnected  As  Boolean   ’客户连接状态,True表示已连接,False表示没有连接    
     
    End  Type  
    这里type 是类似于定义一个类么?
      

  4.   

    留下我的QQ249217475
    希望有人可以在vb上给我指点一二
      

  5.   

    问题一:是不是只要是sckTCPProtocol,就自动取得localIP,不需要在指定?
    如果localIP端口设为0的话,它是自动分配的问题二:为什么这里就要关闭了?那下边怎么还可以执行
    winsock控件要建立连接,必须是没有处于监听状态的winsock控件问题三:这里是不是真的可以不像udp一样需要指定
    它是默认的
      

  6.   

    总结一下:
    1.是否一个winsock在accept之前,必须执行.close关闭监听状态?
    2.在服务器端到底需要指定localhost(=localIp)和localpost?我理解为localhost不需要指定因该是它本身的ip因为他就是服务器,但localhost可以指定也可以不指定么?
    3.再次问Private  Type  ActiveUser    
        ................
        End  Type 
    第一次看到 是定义一个类?
      

  7.   

    1.是否一个winsock在accept之前,必须执行.close关闭监听状态?
    如果还用这个socket,那么是的2。设置本 Server 的 IP地址?!
    本地的监听地址是可以bind的,你要给它赋值?它是不可写的