当前位置:编程学习 > VB >>

求救 郁闷。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

我正在学WINSOCK控件 碰到了一些问题
想问一下你怎么同时多程连接?
就是怎样才可以打开多个客户端进行点对点聊天在局域网里
我简单的做个客户端和服务端 当打开第二个客户端连接后发消息的时候就出现了错误 麻烦你帮我修改一下代码好吗 谢谢!

服务端:
Private Sub Form_Load()
Winsockserver.LocalPort = 1002
Winsockserver.Listen
End Sub

Private Sub send_Click()
Winsockserver.SendData textsend.Text
End Sub

Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
If Winsockserver.State <> sckClosed Then Winsockserver.Close
Winsockserver.Accept requestID

End Sub
Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
Dim tmpstr As String
Winsockserver.GetData tmpstr
textget.Text = tmpstr
End Sub

客户端:
Private Sub Command1_Click()
Winsockclient.SendData Textsend.Text
End Sub

Private Sub Command2_Click()
Winsockclient.Connect
MsgBox "连接成功 可以发信息了"
End Sub
Private Sub Form_Load()
Winsockclient.RemotePort = 1002
Winsockclient.RemoteHost = Winsockclient.LocalIP
End Sub

Private Sub winsockclient_DataArrival(ByVal bytesTotal As Long)
Dim tmpstr As String
Winsockclient.GetData tmpstr
Textget.Text = tmpstr
End Sub
--------------------编程问答-------------------- 服务器端使用winsock控件数组应该可以 --------------------编程问答-------------------- 恩  但是具体怎么弄的呀  麻烦修改一下代码  谢谢啦    --------------------编程问答-------------------- 服务端每收到一个连接时
Load sckClient(NewIndex) --------------------编程问答--------------------    具体怎么做的啊  麻烦把代码给我改改啦  郁闷死了  --------------------编程问答-------------------- 你这是看别人的例子吧,我有VB.NET的例子,可以给你看一下 --------------------编程问答-------------------- 好也  发上来看看   --------------------编程问答-------------------- VB...失望啊...干什么都不爽快 --------------------编程问答--------------------
引用 7 楼 qingye2008 的回复:
VB...失望啊...干什么都不爽快

哪你干什么又爽又快? --------------------编程问答-------------------- 服务端: 
Private Gac() As Boolean
Dim Socknumber As Integer

Private Sub Command1_Click(Index As Integer)
Select Case Index
       Case 0
            Winsock1(0).Close
            Unload Me

       Case 1
            Command1(1).Enabled = False
            Command1(2).Enabled = True
            Winsock1(0).LocalPort = 2600
            Winsock1(0).Listen
            Socknumber = 0
            Frame1.Caption = "服务已经启动"
       Case 2
            Command1(1).Enabled = True
            Command1(2).Enabled = False
            Winsock1(0).Close
            Text(0).Text = 0
            Frame1.Caption = "服务已经停止"
       End Select
End Sub

Private Sub Form_Load()
   Command1(1).Enabled = True
   Command1(2).Enabled = False
End Sub

Private Sub Form_Unload(Cancel As Integer)

   Winsock1(0).Close
End Sub

Private Sub Winsock1_Close(Index As Integer)
   Winsock1(Index).Close
   Unload Winsock1(Index)
   Gac(Index) = False
   Text(0).Text = Int(Text(0).Text) - 1
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
   Socknumber = Socknumber + 1
   
   Load Winsock1(Socknumber)
   Winsock1(Socknumber).Accept requestID
   ReDim Preserve Gac(Socknumber)
   Gac(Socknumber) = True
   Text(0).Text = Int(Text(0).Text) + 1
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
   Dim c As String
   Winsock1(Index).GetData c, vbString
   Dim i As Integer
   For i = 1 To UBound(Gac)
     If Not i = Index Then
      If Gac(i) Then
         Winsock1(i).SendData c
       DoEvents
      End If
     End If
   Next i
      
End Sub

客户端:
Option Explicit
Private Sub Command1_Click()
      Winsock1.RemoteHost = TextServerIP
      Winsock1.RemotePort = TextServerPost.Text
   Winsock1.Connect
   Command1.Enabled = False
   Do
     DoEvents
     Loop Until Winsock1.State = sckConnected Or Winsock1.State = sckError
   If Winsock1.State = sckError Then
      Command1.Enabled = True
      Winsock1.Close
      Text3.Text = "已与服务器连接失败" + Chr$(13) + Chr$(10) + Text3.Text
   Else
    
      Text3.Text = "已与服务器连接成功" + Chr$(13) + Chr$(10) + Text3.Text
      Command2.Enabled = True
      Command3.Enabled = True
   End If
End Sub

Private Sub Command2_Click()

      Winsock1.SendData Text1.Text
      Text2.Text = "我说的话: " + Text1.Text + Chr$(13) + Chr$(10) + Text2.Text
      Text1.Text = ""

End Sub

Private Sub Command3_Click()
   Winsock1.Close
   Command1.Enabled = True
   Command2.Enabled = False
   Command3.Enabled = False
   Text3.Text = "已与服务器断开" + Chr$(13) + Chr$(10) + Text3.Text
End Sub

Private Sub Form_Load()

   Command1.Enabled = True
   Command2.Enabled = False
   Command3.Enabled = False
   
End Sub

Private Sub Winsock1_Close()
   Command1.Enabled = True
   Command2.Enabled = False
   Command3.Enabled = False
   Winsock1.Close
   Text3.Text = "已与服务器断开" + Chr$(13) + Chr$(10) + Text3.Text
   
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
   Dim c As String
   Winsock1.GetData c, vbString
   Text2.Text = "对方说的话: " + c + Chr$(13) + Chr$(10) + Text2.Text
End Sub
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,