public wserver(1 to 300) as New winsock

解决方案 »

  1.   

    那初始化怎么设置?小弟对winsock控件实在没感觉
      

  2.   

    由于程序窗体过多,想定义全局系统级的winsock控件,可是要想动态加载的话,在模块中怎样定义而不是定义数组呢
      

  3.   

    同楼上想法相同,能告诉我吗?
      [email protected]
      

  4.   

    我也有这个问题,如果你解决了,给我发个信好吗?
    [email protected]
    拜托了。
      

  5.   

    不行,我试了public wserver(1 to 300) as New winsock 
    可出错,说什么"无效使用new 关键字
    救救我,兄弟真的没救了,
      

  6.   

    其实我最想的是能够在程序中动态记载winsock控件,但是该怎么样在模块中定义winsock控件变量,使其能够动态加载
    我试着这样做:public wserver as winsock
    然后赋值:wserver.index=0
    但是说什么无效的参数值
    求各位英雄,大哥大姐,帮帮小弟,实在痛苦呀
      

  7.   

    我可以给你写个动态来加载winsock数组的代码。非常好的代码。
    决不多用你的系统资源。你上来就加300个程序不死才怪!
    要代码和我联系。我的email:[email protected]
      

  8.   

    你有没有考虑过像黑客软件一样,在每一台学生机上运行服务端,而你自己作为客户端像这300个服务端发号施令这样一个winsock就够用了。用UDP方式不难实现。如感觉可行可以给我写信 [email protected] 我有一些自己写的例子(控制别的机子重启)
      

  9.   

    在窗体上放一个WINSOCK控件,在属性窗口中将它的名称设置成MySock,Index值设置成0,在程序中用MySock(0)来侦听连接请求,用Load MySock(i)来动态申请,即可解决,只是要注意及时动态的释放
      

  10.   

    同意sunsatan的看法,没必要使用那么大量的内存。自要在server端开一个监听的UDP口,让学生机POST开机信息,然后通过这些信息去获取那边的资料就是了。虽然server监听的方法比较经典。至于winsock的动态加载
    我建议你在窗体上放个wserver,index为1
    然后在form的load里
    for i=2 to 300
    load wserver(i)
    next
    就可以了。
      

  11.   

    小弟感谢各位大哥的帮助,
    小弟的程序是在服务机上运行客户端,而客户机上来诊听连接,当条件满足,服务机发送"启用"信息给客户机,同时发送可用时间给用户机,当时间终止,用户机发送关闭信息给服务器,使用TCP连接,主要是考虑UDP不太可靠,想使用1个winsock控件来实现,但又觉得颇为难,总不能频繁的断开\连接,还无法接收客户机信息,但是如何在模块中定义winsock控件,以及如何初始化,才能够自动加载,大哥们能否帮助小弟一下,
      

  12.   

    主要是窗体过多,所以必须声明个全局的winsock控件,但是在模块中如何声明,如何初始化,才能使其动态加载,
      

  13.   

    在窗体上放winsock控件,设置其index=0我会,但在模块中怎么定义呀
      

  14.   

    使用controls的ADD方法,可以动态的加载控件,包括自已开发的控件。
      

  15.   

    使用controls的ADD方法,可以动态的加载控件,包括自已开发的控件。
      

  16.   

    使用controls的ADD方法,可以动态的加载控件,包括自已开发的控件。
      

  17.   

    我倒不觉得udp不可靠。而且,局域网里应该不会出什么问题的。用1个可能不太好,大概用十个左右吧,就可以同时处理几个连接了。用300个是完全没必要的。
      

  18.   

    在模块中
    dim wserver
    set wserver=frmMain.WsockHOHO,就有一个可以调用的全局变量了,嘿。投机取巧的解决方案。
      

  19.   

    源代蚂蚁
    dim wserver
    set wserver=frmMain.Wsock我试过了,可是运行时出错,弹出"要求对象"的错误信息
    阿飞能不能说详细些
    平平,:sunsatan,我给你们写信了,给我代码呀!
    求求各位大哥了,小弟的毕业设计,没几天了!拜托了
      

  20.   

    这是服务端的代码:
    Dim intClientNumber As Integer
    Option ExplicitPrivate Sub Form_Load()
            wskServer(0).Close
            wskServer(0).LocalPort = 12321
            wskServer(0).Listen
            intClientNumber = 0
    End SubPrivate Sub wskServer_Close(Index As Integer)
            wskServer(Index).Close
            Call CountClientConnect
    End SubPrivate Sub wskServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
            Dim intTemp As Integer
            
            For intTemp = 1 To intClientNumber
                If wskServer(intTemp).State <> 7 Then
                   wskServer(intTemp).Close
                   wskServer(intTemp).Accept (requestID)
                   lstClientInfo.AddItem ("与 " & wskServer(Index + 1).RemoteHostIP & " 建立连接。")
                   Call CountClientConnect
                   Exit Sub
                End If
            Next
            intClientNumber = intClientNumber + 1
            Load wskServer(intClientNumber)
            wskServer(intClientNumber).Close
            wskServer(intClientNumber).Accept (requestID)
            lstClientInfo.AddItem ("与 " & wskServer(Index + 1).RemoteHostIP & " 建立连接。")
            Call CountClientConnect
    End SubPrivate Sub CountClientConnect()
            Dim intTemp As Integer
            Dim intCount As Integer
            
            For intTemp = 1 To intClientNumber
                If wskServer(intTemp).State = 7 Then
                   intCount = intCount + 1
                End If
            Next
            lblMessage.Caption = "有 " & intCount & " 个客户端连接上了。"
    End Sub
    这是客户端的代码:
    Dim lonErrorCode As Long
    Option Explicit
    Private Sub cmdConnect_Click()
            wskClient.Close
            wskClient.RemoteHost = txtServerAddress.Text
            wskClient.RemotePort = txtServerPort.Text
            wskClient.Connect
            lstCurrentInfo.AddItem ("与 " & wskClient.RemoteHost & " 进行连接。")
    End SubPrivate Sub cmdDisConnect_Click()
            wskClient.Close
            lstCurrentInfo.AddItem ("断开与 " & wskClient.RemoteHost & " 的连接。")
    End SubPrivate Sub wskClient_Close()
            wskClient.Close
            lstCurrentInfo.AddItem ("与 " & wskClient.RemoteHost & " 断开连接。")
    End SubPrivate Sub wskClient_Connect()
            lstCurrentInfo.AddItem ("与 " & wskClient.RemoteHost & " 建立连接。")
    End Sub如果有不清楚的,可以和我联系:
    [email protected]
      

  21.   

    呵呵,谢谢大家帮助,我终于找到解决方法,其实我忑也傻了,光想在模块中申明一个winsock控件变量,其实完全没必要,我现在是这样作的,在主窗体main中拖一个winsock控件,设定其index=0,以使其能够被动态加载,然后在其他窗体中直接调用main.winsock(i)进行相应操作即可,呵呵,这样其实也就可以作为全局控件使用了.
    如果哪位大虾能够知道如何在模块中声明一全局winsock控件变量,并怎样在main窗体中初始化,使其index属性为0.千万要告诉小弟呀