vb6 - vb6 winsock 连接而不是每个设备的无限客户端减少到 2
问题描述
您好,我ve got a client/server 2d mmorgp game plaing by us frinds and due to to many copies of the client i
已尝试将客户端减少到每个设备打开 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
,但您可能已经卸载了套接字控件。
您On Error Resume Next
在代码的顶部,但考虑类似这样的代码
Dim lCount As Long
On Error Resume Next
If 1 / 0 > 0 Then lCount = lCount + 1
Debug.Print lCount
. . . 从 If 表达式中打印1
ie OERN 在 If 中获取“下一个”语句,无论它与 If 表达式在同一行。
Main.Server(check).State
现在考虑在卸载控件上检查时会发生什么。由于 OERN,这一项将被计入LoggedOn
这显然不是您想要做的。
在这种情况下使用 OERN,您可能希望像这样反转 If 表达式
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(check).State
炸弹时,它“进入” If 块并且在那里无事可做。
推荐阅读
- git - 远程 GIT 推送失败:找不到存储库
- wordpress - 每次销售/订单提高产品的销售价格
- authentication - 你如何在 Eve 中处理基于 cookie 的身份验证?
- css - 具有自动填充和自动大小的 CSS 网格
- android - 关于使用“liveData.observe”的问题
- azure - 计算 CosmosDb 中两个日期时间值之间的差异
- visual-studio - 在搜索非常大的 Visual Studio 项目时,如何排除这些文件夹和文件?
- python - sys.path 的区别
- azure - Azure - 使用 Powershell 在 VM 上设置标签
- python - 如何在 python 脚本中返回 AWS Sagemaker 笔记本实例的名称?