施義
Lv 5
施義 asked in 電腦與網際網路程式設計 · 1 decade ago

VB 設定物件陣列

小弟想把Winsock設定成陣列

請問該如何做呢?

不是新增在表單上的那種而是能動態的陣列

例如 我要連上某個IP 分別開10個PORT

並且設定 Winsock_DataArrival 之類的控制

Update:

不好意思...

我是說如何不用 將 Winsock 拉至表單上 然候複製成為陣列的這種方式

而是在程式內控制 新增一個 或是關閉

就是..該如何 New 一個 Winsock

Update 2:

用你的方法嚐試了一下

1.建立一個 Winsock

2.將Winsock屬性設定為0

可是 這時候可以使用的也只有Winsock(0)這個阿...

還是說我忽略了什麼步驟嗎?

Update 3:

嗯嗯 原來重點是 Load 這個

對了 可以問一個題外話嗎..

就是像 陣列 可以使用 UBound知道最大值

那物件陣列呢?

Update 4:

毆歐@@ 發現方法了..變成

tcpServer.UBound

UBound(tcpServer)不行 還真怪

謝謝你嚕

1 Answer

Rating
  • 陳玄
    Lv 5
    1 decade ago
    Favorite Answer

    Winsock屬性的index設為0

    要用時

    Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)

    If tcpserver(i).State = sckClosed Then 'i就自己定了

    Unload tcpserver(i) '先Unload才能load Winsock

    Load tcpserver(i)

    tcpserver(i).LocalPort = 9999

    tcpserver(i).Accept requestID

    .....

    2008-01-02 03:25:27 補充:

    tcpServer為Winsoc物件,tcpServer屬性的index設為0

    2008-01-03 07:32:59 補充:

    記得千萬不要複制物件,只要建立一個Winsoc物件,再將index設成0就可以了,不然複制得再多,也不夠用。。

    2008-01-03 21:37:03 補充:

    Private Sub Command1_Click()

    Load tcpserver(1)

    tcpserver(1).RemoteHost = "127.0.0.1" ' SERVER 的 IP

    tcpserver(1).RemotePort = 2234 ' SERVER 所 Bind 的 Port

    End Sub

    '第一次Load tcpserver(1);不用時記得Unload tcpserver(1);桌面上只能有tcpserver(0);不要有tcpserver(1)等等的。

    '

    2008-01-03 21:46:56 補充:

    之前寫錯了,請將

    Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)

    改成

    Private Sub tcpserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)

Still have questions? Get your answers by asking now.