Cómo crear varios sockets como índice

Tengo una aplicación VB donde se usa winsock. Quiero convertirlo a VB.Net, así que, según tengo entendido, debería usar System.net.sockets para hacer esto.

Pero el problema es que en la aplicación VB se crean múltiples sockets usando la función de índice de winsock. ejemplo

Toma de carga (isocket)

donde isocket es una variable entera que se incrementa cada vez, para una nueva solicitud de conexión.

Entonces, ¿cómo hago lo mismo? abrir varios sockets en vb.net?

preguntado el 10 de mayo de 11 a las 14:05

Cree una nueva instancia del System.Net.Sockets.Socket ¿clase? Utilizar el New palabra clave para invocar el método constructor. -

sí, crear instancias, pero lo quiero indexado. Para que pueda llamarlo / referirlo por el valor del índice .... -

Así que coloque esas instancias en una matriz, de la misma manera que lo haría en VB 6. La única diferencia es que todas las matrices están indexadas a cero en .NET, pase lo que pase. -

¿Podría dar un ejemplo de cómo hacer esto exactamente? Bcos en vb el control winsock en sí tiene índice .. -

2 Respuestas

En VB6, Winsock es un OCX, así que lo que está haciendo llamando Load Socket(Index) está creando una nueva instancia del control ActiveX. No existe tal equivalente en VB.NET, así que lo que podría hacer es crear una colección de System.Net.Sockets.Socket:

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

Cuando reciba una nueva solicitud de conexión, cree un nuevo elemento en la colección:

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

Luego puede acceder a sus sockets por índice (basado en cero):

collSockets(0).Whatever()

contestado el 10 de mayo de 11 a las 18:05

Gracias, gran idea ... Pero probé el código ... ¿Podría decirme por qué recibo este mensaje de error? Error 1 'Microsoft.VisualBasic.Collection' no tiene parámetros de tipo y, por lo tanto, no puede tener argumentos de tipo - user733957

@ user733957 Sí, necesitas usar esto Imports System.Collections.ObjectModel en la parte superior de su clase - Matt Wilko

Entonces podemos hacer algo como esto:

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

Eso hará un nuevo socket en cada evento y la x se duplicará será como

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

Etc.

Respondido el 16 de Septiembre de 12 a las 16:09

Por favor, ponga un poco de esfuerzo en sus respuestas. Incluso después de corregir el formato y la ortografía, esto es apenas comprensible. - ЯegDwight

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.