vb6 winsock连接将每个设备的无限客户端减少到2个
你好,我<代码>我有一个客户机/服务器2d mmorgp游戏,由我们朋友制作,由于客户机有很多副本,我代码>我尝试将每个设备打开的客户机减少到2个,但不是每个设备在网络上的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
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块,并且在那里没有什么可做的