Array en Winsock

Iniciado por ASSaulting, 30 Junio 2010, 09:54 AM

0 Miembros y 1 Visitante están viendo este tema.

ASSaulting

Verán, en VB6 era simple, ponías el Index a 0 y se iba sumando...

Os pongo el código que me importa:
Private Sub sckMain_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error Resume Next
TotalIndex = TotalIndex + 1
sckMain(Index).Close
sckMain(Index).Accept requestID
Load sckMain(TotalIndex)
sckMain(TotalIndex).Listen
End Sub

Eso en VB6, que lo que hace es que una vez pida una conexión el servidor, el cliente lo acepte, cargue un nuevo Winsock y lo ponga a la escucha.
Lo utilizo para una aplicación de administración remota.

¿Cómo sería eso en VB.NET??? :huh:
La frase de la abajo dice la verdad.
La frase de la arriba dice una mentira.

[D4N93R]

Ahora tenemos dos clases importantes TcpListener (el server) y TcpClient (el cliente :P)

Echale un ojito a esos links..

Saludos

raul338

Cita de: ASSaulting en 30 Junio 2010, 09:54 AM
Verán, en VB6 era simple, ponías el Index a 0 y se iba sumando...

En vb6 habian array de controles....
En vb6 no dependias de un framework
En vb6 no te armaba 200 lineas de codigo por un form vacio

y QUE!

En .net se hicieron muchas mejoras y nuevas formas de trabajar, usalas!

Usa como dice danger, TcpClient, o hasta podes usar Socket de System.Net si sos "fana" como yo :xD

[D4N93R]

Cita de: raul338 en 30 Junio 2010, 15:57 PM
Usa como dice danger, TcpClient, o hasta podes usar Socket de System.Net si sos "fana" como yo :xD

Hahaha XD Usa tcpClient Y listener cuando lo que necesites es la data, ya que estas clases te dan un Stream para usarla.

El socket usalo cuando requieras más control ya que te retorna es un buffer.. Saludos

ASSaulting

A lo que me refiero es a cómo puedo hacer para que cuando se conecte  un cliente (es de conexión inversa) en el servidor se sume el index y para que se pueda conectar más gente y tenerlos en un listview.

En resumen: ¿Cómo puedo hacer para tener por ejemplo a 2 o más clientes en un listview y poder trabajar con ellos al mismo tiempo? Algo así como un troyano de conexión inversa.
La frase de la abajo dice la verdad.
La frase de la arriba dice una mentira.

[D4N93R]

Pues te creas un array de TcpClients, y un TcpListener. Pones el listener a escuchar y a aceptar clientes, cada vez que aceptes a auno lo metes en el array.

En el link que te mandé tienen un loop infinito, dentro del loop está esta línea:

TcpClient client = server.AcceptTcpClient();

La ejecución de código se detiene justo ahí hasta que alguien se conecte y sea aceptado por el Listener, entonces ahi harías algo asi, tomando en cuenta que ya tienes el array creado (yo voy a usar una lista simple):

Código (csharp) [Seleccionar]
TcpClient client = server.AcceptTcpClient();
m_myClientArray.Add(client);


Pues eso es todo, también puedes crear un hilo por cada cliente que se conecte, pero eso es cuestión de las necesidades de tu aplicación.

Un saludo

43H4FH44H45H4CH49H56H45H

Cita de: ASSaulting en  1 Julio 2010, 02:57 AM
A lo que me refiero es a cómo puedo hacer para que cuando se conecte  un cliente (es de conexión inversa) en el servidor se sume el index y para que se pueda conectar más gente y tenerlos en un listview.

En resumen: ¿Cómo puedo hacer para tener por ejemplo a 2 o más clientes en un listview y poder trabajar con ellos al mismo tiempo? Algo así como un troyano de conexión inversa.

Mira los ejemplos de HttpChannel, los que hay en la red necesitan alguna pequeña modificación pero sirven.
Hace un tiempo probe hacer las conexiones en una LAN de 5 pc's y una netbook donde estaba el server, los clientes se conectaron al mismo tiempo al server sin problemas aunque las pc's donde se ejecutaron tenian AV+firewall instalados como en el caso de ESS 4.X

Las ordenes de prueba del cliente al server deben estar en la DLL (comunmente llamada RemoteObject por muchos).

Se facilita enormemente las conexiones de varios clientes con muy poco codigo.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W