TCP卡机问题!!
Private Sub UserListen_ConnectionRequest(ByVal requestID As Long)
'寻找空闲的usersock
Dim Index As Long
Dim ii As Long
For Index = 0 To MaxDSClient
If Index = MaxUserClient Then updata_data = Format(Now, "yy-mm-ss hh:mm:ss") & "→服务器:服务器分配用户的连接已经分配完毕,将不会接受新的用户连接。": updata_serverList
If Me.UserClient(MaxUserClient).State <> 0 Then updata_data = Format(Now, "yy-mm-ss hh:mm:ss") & "服务器:用户连接超过最大连接数,如果需要创建更多连接请修改系统设置,然后重启服务器。": updata_serverList: Exit Sub
If UserClient(Index).State = 0 Then
UserClient(Index).Accept requestID
UserClient(Index).Tag = Format(Now, "yyyymmddhhmmss")
For usersock_state = 0 To MaxUserClient
If UserClient(usersock_state).State <> 0 Then
If UserClient(usersock_state).RemoteHostIP = UserClient(Index).RemoteHostIP And UserClient(usersock_state).Tag < UserClient(Index).Tag Then
UserClient(usersock_state).Close
updata_data = Format(Now, "yy-mm-ss hh:mm:ss") & "→服务器:存在两个连接IP相同的用户,服务器将关闭早期的连接" & "|" & UserClient(Index).RemoteHostIP
updata_serverList
End If
End If
Next
Exit For
End If
Next
'DoEvents
End Sub
以上为服务器监听代码!我现在碰到原因是在内部光纤的情况下!超过80个TCP客户端同时连接服务器监听端口时软件服务器会出现卡死的状态。请问下是监听端口连接的卡死还是接收客户端信息口的卡机? tcp 服务器
[解决办法]
1、采用我上面说的IIS+ASP+XMLHTTP+VB的方案,有点类似于WEB开发上的AJAX技术来实现这种网络数据交换操作。
2、项目外包,找个有实力的人或公司去弄网络服务这一块,你们自己写客户端。
如果你不急于解决这种问题,你可以慢慢去研究C/C++语言网络服务程序开发这一块,熟悉了基础知识后,去研究架构,然后再开始慢慢实验和慢慢写。
如果你留意一下会发现,在设备管理器里被影藏的项目中,会发现HTTP服务是做了驱动支持的,这就是MS的解决方案,而MS对外的解决方案是IOCP,虽然也不错,不过还是有软肋的,在这一块的架构上,要弄得好,自己还是要去弄过滤驱动的,虽然这种驱动并不难做,但对于搞应用开发的人来说,开始还是很花时间的,所以这一块真要深入,水可以说还是很深的,不会像VB做玩具那么简单,要自己做这块没有个心里准备是不行的。