另一控件 fiveserver

server|控件

Option Explicit
Public HostIp As String
Public HostPort As String
'服务器启动的时间
Dim StartTime As Date
'登录到服务器的玩家人数
Dim VisitNum As Integer
'定义可登录的最大玩家数
Const MaxConnect = 20
'定义记录已经加载的winsock控件数
Dim WsockNum As Integer
'定义存储玩家信息的数组
Dim mUser(MaxConnect) As userInfo
'定义存储棋局信息的数组
Dim mtwoUser(MaxConnect / 2) As twoUser

Private Sub TcpWsock_ConnectionRequest(ByVal requestID As Long)
Dim i As Long
i = 1
Dim free As Boolean
free = False
'wsocknum为目前已经加载的winsock的数目
'在已经加载的控件数组中检查没有链接的控件
For i = 1 To WsockNum
    If Wsock(i).State = sckClosed Then
        free = True
        Exit For
    End If
Next i
'MaxConnect为最大连接数,如果已经加载的winsock控件达到最大,退出
If WsockNum = MaxConnect And free = False Then
    Exit Sub
End If
'如果所有已经加载的winsock控件都在连接,加载新的控件
If free = False Then
    'wsock(i)为控件数组
    WsockNum = WsockNum + 1
    Load Wsock(WsockNum)
    i = WsockNum
End If
If Wsock(i).State <> sckClosed Then
    Wsock(i).Close
End If
Wsock(i).Accept requestID
Wsock(i).SendData "/LgOn你已经连上BusyAnts的五子棋服务器了"
'保存玩家的上站时间、ip地址
mUser(i).mLogonTime = Now()
'登录到服务器的玩家人数+1
VisitNum = VisitNum + 1
mUser(i).muserIP = Wsock(i).RemoteHostIP
mUser(i).mConnected = True
End Sub

Private Sub txtTalk_Change()
If Len(txtTalk.Text) > 1000 Then
    txtTalk.Text = ""
End If
End Sub

Private Sub UserControl_Initialize()
'利用tcpwsock侦听是否有客户端的请求
HostIp = TcpWsock.LocalIP
TcpWsock.LocalPort = 1001
HostPort = 1001
TcpWsock.Listen
WsockNum = 1
VisitNum = 0
StartTime = Now()
End Sub

Private Sub Wsock_Close(Index As Integer)
'与玩家的连接中断的处理
Wsock(Index).Close
'清理保存玩家状态的变量
mUser(Index).moppIndex = 0
mUser(Index).mConnected = False
If mtwoUser(mUser(Index).mIndex).Fight = True Then
    mtwoUser(mUser(Index).mIndex).Fight = False
    '如果断线的玩家正在下棋,则以下的程序通知对手自己已经退出系统了
    If mtwoUser(mUser(Index).mIndex).moppIndex1 = Index Then
        mUser(mtwoUser(mUser(Index).mIndex).moppIndex2).mIndex = 0
        Wsock(mtwoUser(mUser(Index).mIndex).moppIndex2).SendData "/Quit"
    Else
        mUser(mtwoUser(mUser(Index).mIndex).moppIndex1).mIndex = 0
        Wsock(mtwoUser(mUser(Index).mIndex).moppIndex1).SendData "/Quit"
    End If
    mUser(mtwoUser(mUser(Index).mIndex).moppIndex1).mIndex = 0
End If
mUser(Index).mIndex = 0
SendtoAll mUser(Index).nickName & "离开了BusyAnts五子棋系统"
txtTalk.Text = txtTalk.Text & "(" & Time() & ")" & mUser(Index).nickName & "离开了BusyAnts五子棋系统" & vbCrLf
End Sub

Private Sub Wsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Information As String
Dim i As Integer
Dim tempStr As String
Dim pos As Integer
Wsock(Index).GetData Information
Dim header As String
header = Left$(Information, 5)
Select Case header
    Case "/Call"
    '客户端呼叫处理
        Dim callName As String
        callName = Mid(Information, 6)
        For i = 1 To MaxConnect
            If mUser(i).nickName = callName And mUser(i).mConnected = True Then
                Exit For
            End If
        Next
        If i > MaxConnect Then
            Wsock(Index).SendData "/Play" & "NO" & Index & ";没有此人!!"
    &nb

时间: 2024-10-29 00:21:07

另一控件 fiveserver的相关文章

C++ Builder中如何保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

javaweb-网页调用ocx控件打开或创建注册表的权限问题

问题描述 网页调用ocx控件打开或创建注册表的权限问题 在某几个win7 64位笔记本上, 通过服务器页面调用ocx读取注册表会提示无权限的现象,但使用本地html文件调用没问题, 不知是何原因,求大侠给点提示 解决方案 又试了一下,使用世界之窗浏览器可以正常使用了.但不明白为何? 解决方案二: ie本地file协议浏览(intranet)和http访问(internet)使用的是不同的安全设置,你按照本地的intranet安全配置internet安全设置 不过你这种需求没什么意义,只能针对特殊

web-关于不用控件绑定数据的问题

问题描述 关于不用控件绑定数据的问题 各位大神 我是一名在校计算机系大学生 想请教一下现在企业里做web是不是不用vs里面自带的控件 如果不用控件 这个gridview绑定数据库的数据应该如何实现 能说详细点或者给个链接教程吗 先不说 mvc架构 我想先用代码去实现 再去学mvc 谢谢 求大神指点 解决方案 很难的 怎么有点看不到是什么啊 解决方案二: 对WEB来说.其实很简单.WEB中表格的本质是 <table><tr><td></td></tr&g

控件-mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了

问题描述 mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了 //串口void CPort_testDlg::OnComm() { //if(stop)return; VARIANT m_input1; COleSafeArray m_input2; long lengthi; BYTE data[600]; CString str; int ai=0bi=0ci=0di=0; int sum=0; if(m_Comm.GetCommEvent()==2)

Javascript 遍历页面text控件详解

 本篇文章主要是对Javascript遍历页面text控件进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 以下函数实现了列出页面中所有html控件类型为text的控件ID    代码如下:         function Texts()          {               //var els= document.getElementsByTagName("*");   //els得到页面所有控件               var els= document.

充分利用 .NET 框架的 PropertyGrid 控件(微软)之二

控件|微软 创建 PropertyGrid 控件要使用 Visual Studio .NET 创建 PropertyGrid 控件,需要将该控件添加到工具箱中,因为默认情况下并不包含该控件.在 Tools(工具)菜单中,选择 Customize Toolbox(自定义工具箱).在对话框中选择 Framework Components(框架组件)选项卡,然后选择 PropertyGrid. 如果您从命令行编译代码,请使用 /reference 选项并指定 System.Windows.Forms.

如何用c#来制作一个activeX控件或类似的东西

active|activex|控件 Q cat: 操作系统: 2000/xp 编程工具: vs.net 2003 /c# 问题: 我想制作一个activeX控件或类似的东西,有用户界面的,然后想在ie中使用,通过Vbscript与其进行数据交换,在以前好像可以使用vb就能做到,但是现在是vs.net 2003企业版,好像已经进化了,activeX成了老的技术,那vs.net如何解决这种类似的问题?如果要使用c#来编程的话,具体如何操作?还要有界面. A回答: 在C#中和ActiveX控件对应的是

手机端产品交互设计:手机端产品翻页控件的设计

文章描述:对手机端产品翻页控件做的一些粗浅整理归纳.具体到设计应用中,我们需要根据产品性质.用户操作使用情景.手机和操作平台本身的特性等具体情况来考虑设计使用翻页控件. 翻页控件在很多手机端产品中属于容易被忽视但又不可或缺的一部分,今天就手机端产品翻页控件的分类和使用谈谈自己一些粗浅的看法. 在手机端产品中,翻页控件的展示形式五花八门:以所展示信息内容的性质和用户的使用情境作为维度划分的话,大致可以分为这样几个类型: A:时效类翻页控件 产品所展示的信息在"时效性""关联度&

iOS8新特性扩展(Extension)应用之四——自定义键盘控件

iOS8新特性扩展(Extension)应用之四--自定义键盘控件         iOS8系统的开放第三方键盘,使得用户在输入法的选择上更加自主灵活,也更加贴近不同语言的输入风格.这篇博客,将介绍如何开发一个第三方的键盘控件. 一.了解UIInputViewController类         UIInputViewController是系统扩展支持键盘扩展的一个类,通过这个类,我们可以自定义一款我们自己的键盘提供给系统使用.         首先,我们先来看一下这个类中的一些属性和方法: