vb6 winsock连接将每个设备的无限客户端减少到2个

vb6 winsock连接将每个设备的无限客户端减少到2个,vb6,2d,winsock,Vb6,2d,Winsock,你好,我我有一个客户机/服务器2d mmorgp游戏,由我们朋友制作,由于客户机有很多副本,我我尝试将每个设备打开的客户机减少到2个,但不是每个设备在网络上的2个客户机。也许我做错了什么 Sub ConnectionRequestCon(ByVal requestID As Long) On Error Resume Next Dim check As Integer Dim LoggedOn As Integer Dim NewIndex As Integer Dim RandomCheck

你好,我<代码>我有一个客户机/服务器2d mmorgp游戏,由我们朋友制作,由于客户机有很多副本,我我尝试将每个设备打开的客户机减少到2个,但不是每个设备在网络上的2个客户机。也许我做错了什么

Sub ConnectionRequestCon(ByVal requestID As Long)
On Error Resume Next
Dim check As Integer
Dim LoggedOn As Integer
Dim NewIndex As Integer
Dim RandomCheck As Integer
NewIndex = GetFreeIndex
LogOutProcedure NewIndex
RandomizeConLandLaunch NewIndex
Load Main.Server(NewIndex)
Load Main.EngageTimer(NewIndex)
Main.Server(NewIndex).Accept requestID
AddServerLogText NewIndex & ": Connected [" & Main.Server(NewIndex).RemoteHostIP & "]"
RandomCheck = RandomNumber(1000, 30000)
SetConAuthNumber NewIndex, RandomCheck
Main.Server(NewIndex).SendData "1,Welcome To Xiaspora - " & TotalLogedInUsers & " Users Online" &             Chr(13) & "34," & RandomCheck & Chr(13)
DoEvents
Do
check = check + 1
If Main.Server(check).State = 7 And Main.Server(check).RemoteHostIP =     Main.Server(NewIndex).RemoteHostIP Then LoggedOn = LoggedOn + 1
Loop Until check = Main.Server.Count
If LoggedOn >= 4 Then CloseCon NewIndex 'with the number 4 reduce the clients per device . when is 7     is unlimited
End Sub

您正在将
check
从1循环到
Main.Server.Count
并检查每个
Main.Server(check.State)
,但您可能已经卸载了套接字控件

您在代码上有“<代码>”,在代码的顶部继续“下一个/代码”,但请考虑类似于这个

的代码。
Dim lCount As Long
On Error Resume Next
If 1 / 0 > 0 Then lCount = lCount + 1
Debug.Print lCount
If Main.Server(check).State <> 7 Then
    '--- do nothing
ElseIf Main.Server(check).RemoteHostIP = Main.Server(NewIndex).RemoteHostIP Then
    LoggedOn = LoggedOn + 1
End If
。打印
1
,即从If表达式OERN在If中获取“next”语句,无论它与If表达式在同一行上

现在考虑当<代码>主服务器。(检查)。状态< /代码>在未加载的控件上检查时会发生什么。由于OERN,这一项将计入

LoggedOn
,这显然不是您想要做的

在这种情况下,使用OERN,您可能希望像这样反转If表达式

Dim lCount As Long
On Error Resume Next
If 1 / 0 > 0 Then lCount = lCount + 1
Debug.Print lCount
If Main.Server(check).State <> 7 Then
    '--- do nothing
ElseIf Main.Server(check).RemoteHostIP = Main.Server(NewIndex).RemoteHostIP Then
    LoggedOn = LoggedOn + 1
End If
如果Main.Server(检查).State 7,则
---什么也不做
ElseIf Main.Server(check).RemoteHostIP=Main.Server(NewIndex).RemoteHostIP然后
LoggedOn=LoggedOn+1
如果结束
。因此,当访问
Main.Server(check).State
时,它会“进入”If块,并且在那里没有什么可做的