1个S端2个C端
S端1个list,1个text
C端1个list,1个text,2个command
需求:
list同步text内容,当某一个C端断开连接list内就清除断开的C端的text信息,就是list数据同步,由于初次使用winsock,请高手帮忙啊。
=======S端目前已写代码=======================
Dim Ser(500, 2) As String
Private Sub Form_Load()
List1.AddItem Text1.Text
If Winsock(0).State <> sckClosed Then Winsock(0).Close
Winsock(0).Listen
Me.Caption = "等待联机"
End SubPrivate Sub Winsock_Close(Index As Integer)
On Error GoTo acd
Me.Caption = "客户端:" & Winsock(Index).RemoteHostIP & "已经关闭连接"
'这里不知道怎么写断开后删除list里C端的信息。
Ser(Index, 0) = ""
Unload Winsock(Index)
Exit Sub
acd:
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim i As Integer, pi As Integer
Dim bi As Boolean
If Index = 0 Then
For i = 1 To 30
If Ser(i, 0) = "" Then
pi = i
bi = True
Exit For
End If
Next i
If bi = True Then
Ser(pi, 0) = Winsock(0).RemoteHostIP
Load Winsock(pi)
Winsock(pi).LocalPort = 10000 + pi
Winsock(pi).Accept requestID
Me.Caption = "已有客户端连接"
'List1.AddItem '客户机上的text 不知道怎么写
'Winsock(i).SendData 发送服务端的list数据,不知道怎么写
Else
Me.Caption = "客户端连接已满"
End If
End If
End Sub
============================================
C端代码还没写,高手帮忙啊整个过程就是S端和C端的list同步C端的连接和断开信息。。在线等啊,各位老大,5.1快乐。
S端1个list,1个text
C端1个list,1个text,2个command
需求:
list同步text内容,当某一个C端断开连接list内就清除断开的C端的text信息,就是list数据同步,由于初次使用winsock,请高手帮忙啊。
=======S端目前已写代码=======================
Dim Ser(500, 2) As String
Private Sub Form_Load()
List1.AddItem Text1.Text
If Winsock(0).State <> sckClosed Then Winsock(0).Close
Winsock(0).Listen
Me.Caption = "等待联机"
End SubPrivate Sub Winsock_Close(Index As Integer)
On Error GoTo acd
Me.Caption = "客户端:" & Winsock(Index).RemoteHostIP & "已经关闭连接"
'这里不知道怎么写断开后删除list里C端的信息。
Ser(Index, 0) = ""
Unload Winsock(Index)
Exit Sub
acd:
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim i As Integer, pi As Integer
Dim bi As Boolean
If Index = 0 Then
For i = 1 To 30
If Ser(i, 0) = "" Then
pi = i
bi = True
Exit For
End If
Next i
If bi = True Then
Ser(pi, 0) = Winsock(0).RemoteHostIP
Load Winsock(pi)
Winsock(pi).LocalPort = 10000 + pi
Winsock(pi).Accept requestID
Me.Caption = "已有客户端连接"
'List1.AddItem '客户机上的text 不知道怎么写
'Winsock(i).SendData 发送服务端的list数据,不知道怎么写
Else
Me.Caption = "客户端连接已满"
End If
End If
End Sub
============================================
C端代码还没写,高手帮忙啊整个过程就是S端和C端的list同步C端的连接和断开信息。。在线等啊,各位老大,5.1快乐。
当客户端关闭时,遍历第二个list,删除掉与客户端IP相同的item,同时,根据这个list的Index,删除第一个List的Item就可以了。
Dim i As Integer, pi As Integer
Dim bi As Boolean
If Index = 0 Then
For i = 1 To 30
If Ser(i, 0) = "" Then
pi = i
bi = True
Exit For
End If
Next i
If bi = True Then
Ser(pi, 0) = Winsock(0).RemoteHostIP
List1.AddItem Ser(pi, 0)
Load Winsock(pi)
Winsock(pi).LocalPort = 10000 + pi
Winsock(pi).Accept requestID
Me.Caption = "已有客户端连接"
For i = 0 To List1.ListCount
Dim strSend As String
strSend = List1.List(i)
Winsock(pi).SendData strSend '发送服务端的list数据,不知道怎么写
Next i
Else
Me.Caption = "客户端连接已满"
End If
End If
请问是清除List内(S端?C端?断开的C端的text信息.
以下S端代码,在各自C端断开时清除C端在S端的List内的连接记录:
Private Sub Winsock_Close(Index As Integer)
On Error GoTo acd
Me.Caption = "客户端:" & Winsock(Index).RemoteHostIP & "已经关闭连接"
'这里不知道怎么写断开后删除list里C端的信息。
Ser(Index, 0) = ""
Unload Winsock(Index)
List1.RemoveItem Index - 1 ' 每隔一项
Exit Sub
acd:
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim bi As Boolean
If Index = 0 Then
For i = 1 To 30
If Ser(i, 0) = "" Then
pi = i
bi = True
Exit For
End If
Next i
If bi = True Then
Ser(pi, 0) = Winsock(0).RemoteHostIP
List1.AddItem pi & "-" & Ser(pi, 0)
Load Winsock(pi)
Winsock(pi).LocalPort = 10000 + pi
Winsock(pi).Accept requestID
Me.Caption = "已有客户端连接"
For i = 0 To List1.ListCount
Dim strSend As String
strSend = List1.List(i)
Winsock(pi).SendData strSend '发送服务端的list数据,不知道怎么写
Next i
Else
Me.Caption = "客户端连接已满"
End If
End If
End Sub由于C端断开连接,由S端控制C端是无法实现的.则应由C端的断开连接时通过代码清除在C端本身的List内内容.
行 38: 属性名 _ExtentX 在 tcpclient 中是无效的。
行 39: 属性名 _ExtentY 在 tcpclient 中是无效的。
行 40: 属性名 _Version 在 tcpclient 中是无效的。
这事怎么样回事