2011-05-10 23 views
1

我有一个使用winsock的VB应用程序。我想将其转换为VB.Net,所以据我了解,我应该使用System.net.sockets来完成此操作。如何创建多个套接字作为索引

但问题是在VB应用程序中使用winsock的索引功能创建多个套接字。例如

荷载插座(的ISocket)

其中的ISocket是每次递增,对于新的连接请求的整数变量。

那么,我该怎么做,即。在vb.net中打开多个套接字?

+3

创建'System.Net.Sockets.Socket'的新实例类?使用'New'关键字来调用构造函数方法。 – 2011-05-10 14:04:28

+0

是创建实例,但我希望它索引。所以,我可以通过索引值调用/引用它.... – user733957 2011-05-10 14:30:49

+0

因此,将这些实例放入一个数组中,就像在VB 6中一样。唯一不同的是* all *数组在零索引.NET,无论如何。 – 2011-05-10 14:31:13

回答

3

在VB6中,Winsock是一个OCX,所以你通过调用Load Socket(Index)正在创建一个新的ActiveX控件实例。有没有这样相当于在VB.NET所以你可能要做的就是创建System.Net.Sockets.Socket的集合:

Dim collSockets As New Collection(Of System.Net.Sockets.Socket) 

当你得到一个新的连接请求,创建在一个新项目收藏:

Dim sck As New System.Net.Sockets.Socket(**Initialise Your New Socket Here**) 
collSockets.Add(sck) 

然后你就可以(从零开始)通过索引访问您的插座:

collSockets(0).Whatever() 
+0

谢谢,好主意..但是我试过了代码..你能让我知道为什么我得到这个错误信息 - 错误'Microsoft.VisualBasic.Collection'has没有类型参数,所以不能有类型参数 – user733957 2011-05-10 14:54:33

+0

@ user733957是的,你需要在你的类的顶部使用这个'Imports System.Collections.ObjectModel' – 2011-05-10 15:01:13

+0

Dude ...你是一个...非常感谢... – user733957 2011-05-10 15:06:31

0

然后,我们可以做这样的事情:

dim x as integer = 0 
x += 1 
collSockets(x).Whatever() 

这将在每个事件做出新的插座和X将增加一倍,会像

collSocket(1).Whatever() 
x+= 1 
collSocket(2).Whatever() 

等等

+1

请为你的答案付出一些努力。即使在确定格式和拼写正确之后,这也是难以理解的。 – 2012-09-16 12:37:32