Server:
Private Sub Form_Load()
    If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
    Me.Winsock1.LocalPort = 4001
    Me.Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  With Me.Winsock1
    If .State <> sckClosed Then .Close
    .Accept (requestID)
    DoEvents
  End With
End SubClient:
Private Sub cmdConnect_Click()
  If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
  Me.Winsock1.RemoteHost = "10.65.145.28"
  Me.Winsock1.RemotePort = 4001
  Me.Winsock1.Connect
End SubPrivate Sub Winsock1_Connect()
  MsgBox "Connect Success"
End Sub

解决方案 »

  1.   

    SORRY,winsock我不熟。跟你一起学习!
      

  2.   

    不需要Timer控件。
    请利用Wunsock本身的事件来处理。
    例如,服务器处理客户的连接请求,应在
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)最好看看MSDN中的例子。
      

  3.   

    很显然你用的TCP协议,这种基于长连接的使用稍稍有些麻烦
    1、在Server端指定监听端口并监听
    Server:
    Private Sub Form_Load()
        If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close 'winsock复位
        Me.Winsock1.LocalPort = 4001 '监听端口
        Me.Winsock1.Listen '监听
    End Sub'接到Client端的Connect要求触发的事件
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      With Me.Winsock1
        If .State <> sckClosed Then .Close '把sock关闭以便进入对话状态
        .Accept (requestID) '接受交易号(姑且这么叫),这样就和Client真正连上可以使用Send了
        DoEvents
      End With
    End Sub
    Private Sub cmdConnect_Click()
      If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
      Me.Winsock1.RemoteHost = "10.65.145.28" '单机中就是你的机器
      Me.Winsock1.RemotePort = 4001 '端口号必须和Server一致,否则就不知道连到哪里去了
      Me.Winsock1.Connect
    End SubPrivate Sub Winsock1_Connect() '连接成功的事件
      MsgBox "Connect Success"
    End Sub
      

  4.   

    但现在还是无法连接 啊
    在客户端的
    Private Sub Form_Load()
    Winsock1.LocalPort = 4000
    Winsock1.CloseEnd Sub用这样写吗???
      

  5.   

    SORRY,winsock我不熟,一起学吧!!
      

  6.   

    我现在在客户端的代码是这样的:
    Private Sub connect_Click(Index As Integer)
    If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
      Me.Winsock1.RemoteHost = "10.65.145.28"
      Me.Winsock1.RemotePort = 4001
      Me.Winsock1.connect
    If Me.Winsock1.State = 7 Then
    MsgBox "恭喜恭喜,您连接成功,请进行操作~!~", vbOKOnly + vbExclamation, "连接成功"
    Else
    MsgBox "对不起,未能与服务器连接,请重新连接~!~", vbOKOnly + vbExclamation, "连接失败"
    End If
    End Sub而在服务器端是这样的:
    Private Sub Form_Load()
    If Winsock1.State <> sckClosed Then Winsock1.Close
    Me.Winsock1.RemotePort = 4001
    Me.Winsock1.Listen
    End Sub现在还是无法连接上,请给予改正
    谢谢
      

  7.   

    服务器端增加:
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      With Me.Winsock1
        If .State <> sckClosed Then .Close
        .Accept (requestID)
        DoEvents
      End With
    End Sub客护短为:
    Private Sub cmdConnect_Click()
      If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
      Me.Winsock1.RemoteHost = "10.65.145.28"
      Me.Winsock1.RemotePort = 4001
      Me.Winsock1.Connect
    End SubPrivate Sub Winsock1_Connect()
      MsgBox "Connect Success"
    End Sub
      

  8.   

    这是我刚做的一个点对点聊天的程序
    VERSION 5.00
    Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
    Begin VB.Form Form1 
       Caption         =   "点对点通讯"
       ClientHeight    =   6330
       ClientLeft      =   60
       ClientTop       =   345
       ClientWidth     =   6855
       Icon            =   "Form1.frx":0000
       LinkTopic       =   "Form1"
       ScaleHeight     =   6330
       ScaleWidth      =   6855
       StartUpPosition =   2  'CenterScreen
       Begin VB.ListBox lstTo 
          BeginProperty Font 
             Name            =   "MS Sans Serif"
             Size            =   12
             Charset         =   0
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   2460
          ItemData        =   "Form1.frx":030A
          Left            =   90
          List            =   "Form1.frx":030C
          TabIndex        =   5
          TabStop         =   0   'False
          Top             =   3225
          Width           =   6675
       End
       Begin MSWinsockLib.Winsock Winsock1 
          Left            =   6345
          Top             =   2790
          _ExtentX        =   741
          _ExtentY        =   741
          _Version        =   393216
       End
       Begin VB.CommandButton cmdConnect 
          Caption         =   "连接"
          Height          =   495
          Left            =   4725
          TabIndex        =   4
          TabStop         =   0   'False
          Top             =   2655
          Width           =   1215
       End
       Begin VB.TextBox txtIP 
          Height          =   300
          Left            =   1500
          TabIndex        =   3
          TabStop         =   0   'False
          Text            =   "192.168.1.68"
          Top             =   2760
          Visible         =   0   'False
          Width           =   2745
       End
       Begin VB.CheckBox chkServer 
          Caption         =   "服务器"
          Height          =   330
          Left            =   120
          TabIndex        =   2
          TabStop         =   0   'False
          Top             =   2745
          Visible         =   0   'False
          Width           =   1215
       End
       Begin VB.TextBox txtMemo 
          BeginProperty Font 
             Name            =   "MS Sans Serif"
             Size            =   12
             Charset         =   0
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   360
          Left            =   75
          TabIndex        =   1
          Top             =   5805
          Width           =   6675
       End
       Begin VB.ListBox lstFrom 
          BeginProperty Font 
             Name            =   "MS Sans Serif"
             Size            =   12
             Charset         =   0
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   2460
          ItemData        =   "Form1.frx":030E
          Left            =   120
          List            =   "Form1.frx":0310
          TabIndex        =   0
          TabStop         =   0   'False
          Top             =   150
          Width           =   6615
       End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Option ExplicitPrivate Sub chkServer_Click()
      If Me.chkServer.Value Then
        If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
        Me.Winsock1.LocalPort = 4001
        Me.Winsock1.Listen
      End If
    End SubPrivate Sub cmdConnect_Click()
      If Me.Winsock1.State <> sckClosed Then Me.Winsock1.Close
      Me.Winsock1.RemoteHost = txtIP.Text
      Me.Winsock1.RemotePort = 4001
      Me.Winsock1.Connect
      Call AddTo("呼叫")
    End SubPrivate Sub Form_Load()
      
      With nfIconData
        .hwnd = Me.hwnd
        .uID = Me.Icon
        .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
        .uCallbackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon.Handle
        .szTip = "点对点通讯系统" & Chr$(0)
        .cbSize = Len(nfIconData)
      End With
      Call Shell_NotifyIcon(NIM_ADD, nfIconData)
      
      Call chkServer_Click
    End SubPublic Sub AddTo(ByVal pstrTemp As String)
      lstTo.AddItem (pstrTemp)
      lstTo.ListIndex = lstTo.ListCount - 1
      DoEvents
      Me.txtMemo.SetFocus
    End SubPublic Sub AddFrom(ByVal pstrTemp As String)
      lstFrom.AddItem (pstrTemp)
      lstFrom.ListIndex = lstFrom.ListCount - 1
      DoEvents
      Me.txtMemo.SetFocus
    End SubPrivate Sub Form_Resize()
      'If Me.WindowState = 1 Then
      '  Me.BorderStyle = 0
      'Else
      '  Me.BorderStyle = 2
      'End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
    End SubPrivate Sub lstFrom_DblClick()
      Me.lstFrom.Clear
      Me.txtMemo.SetFocus
    End SubPrivate Sub lstTo_DblClick()
      Me.lstTo.Clear
      Me.txtMemo.SetFocus
    End SubPrivate Sub txtMemo_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 13 Then
        If UCase(Me.txtMemo.Text) = "/SHOW" Then
          Me.chkServer.Visible = True
          Me.txtIP.Visible = True
          Me.txtMemo.Text = ""
          Exit Sub
        End If
        If Len(Trim(Me.txtMemo.Text)) > 0 Then
          Call SendInfo(Me.txtMemo.Text)
          If Left(Trim(Me.txtMemo.Text), 1) <> "/" Then
            Call AddTo(Me.txtMemo.Text)
          End If
          Me.txtMemo.Text = ""
        End If
      End If
    End SubPrivate Sub Winsock1_Close()
      Call chkServer_Click
      MsgBox "对方退出"
    End SubPrivate Sub Winsock1_Connect()
      Call AddFrom("连接成功")
    End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      With Me.Winsock1
        If .State <> sckClosed Then .Close
        .Accept (requestID)
        DoEvents
        'Call SendInfo("连接成功")
        Call AddFrom("连接成功")
      End With
    End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
      Dim strTemp As String
      
      With Me.Winsock1
        .GetData strTemp
        Select Case UCase(Left(strTemp, 2))
          Case "/T"
            Me.Caption = Right(strTemp, Len(strTemp) - 2)
          Case Else
            Call AddFrom(strTemp)
        End Select
      End With
    End SubPublic Sub SendInfo(ByVal pstr As String)
      On Error Resume Next
      Me.Winsock1.SendData pstr
    End Sub
      

  9.   

    客户端应该设定连接得端口
    Winsock1.RemoteHost = "192.168.1.2"
    Winsock1.RemotePort = 1234
    Winsock1.Connect服务器端应该设定侦听端口
    Winsock1.LocalPort = Val(Text3.Text)
    Winsock1.Listen
    服务器端不用设置RemoteHost属性,因为连接后会自动将远程连接的计算机IP地址设定到RemoteHost上。
      

  10.   

    看看以下说明:Listen 方法
          创建套接字并将其设置为侦听模式。该方法仅适用于 TCP 连接。语法object.Listenobject 所在处代表一个对象表达式,其值是“应用于”列表中的对象。参数None返回值Void说明当有新连接时就会出现 ConnectionRequest 事件。处理 ConnectionRequest 事件时,应用程序应该(在一个新的控件示例上)用 Accept 方法接受连接。
    Accept 方法
          仅适用于 TCP 服务器应用程序。在处理 ConnectionRequest 事件时用这个方法接受新连接。语法object.Accept requestIDobject 所在处代表对象表达式,其值是“应用于”列表中的对象。数据类型Long返回值 Void说明在 ConnectionRequest 事件中使用 Accept 方法。ConnectionRequest 事件有一个对应的参数,即 RequestID 参数,该参数应该传给 Accept 方法。请看下例:Private Sub Winsock1_ConnectionRequest (ByVal requestID As Long)
       '测试 State 属性,如果当前连接是打开的话,
       '则关闭连接。
       If Winsock1.State <> sckClosed Then Winsock1.Close   '将 requestID 参数值传递给 Accept 方法。
       Winsock1.Accept requestID
    End Sub应该在新的控件示例(不是侦听状态下的示例)中使用 Accept 方法。!!!!!!