Visual Basic - Matriz de winsocks

Life is soft - evento anual de software empresarial
 
Vista:

Matriz de winsocks

Publicado por Mac (1 intervención) el 20/08/2005 18:30:36
Buenas a todos.

He creado en un programa una matriz de winsocks pero cuando le asigno un servidor y un puerto a uno de los winsock estas propiedades son iguales en todos; me explico, si le asigno estas propiedades al winsock(0):

Winsock(0).Remotehost = DireccionServidor
Winsock(0).Remoteport = Puerto

estas propiedades se copian en todos los winsock de la matriz y cuando me conecto con este winsock(0) al servidor no puedo cambiar las propiedades de los demas y solo puedo realizar mas conexiones al mismo servidor.

¿Como podria hacer esto?

Gracias de antemano [^_^]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Matriz de winsocks

Publicado por Jorge Carlos (9 intervenciones) el 21/08/2005 22:24:46
Bueno por lo que entendi, te refieres a tener multiples conexiones a un mismo servidor y utilizarla en una matriz de conexiones para poder gestionarlo.

Bueno pues te quiero decir que no hay ningun problema en cuanto al numero de conexiones querealices hacia un servidor, ya que cada uno esta en su propia conexion. Pero no entiendo por que lo quiere manejar asi, ya que con una conexion puedes realizar todas las operaciones. lo unico que se me ocurre es que a lo mejor quiere crear un servicio y que los clientes se conecten haci a ti, eso si me parece mas logico ya que al ser multiples clientes pues necesitas una n cantidad de conexion para gestionar a todos y por tanto tienes que estar creando en tiempo de ejecucion nuevas conexiones.

Por cierto cuando se conecta hacia un servidor y lo estas manejando como lo comentas pues el servidor no puede afectar a las otras conexion ya que de antemano le dijiste con cual conexion estas realizando esto.

por ejemplo
winsock(0).connect
Aqui le dices que se conecte unica la conexion con indice cero y no todos

cuando recibe el evento creo que de recepcion de datos

algo asi

private sub winsock_arrived(index , buffer de datosdatos..)
select case index
case 0 //llegaron datos para la conexion 0
case 1 //llegaron datos para la conexion 1
case n //llegaron datos para la conexion n
end select
end sub

Por tanto caemos en el hecho de que apesar de ser apartentemente un solo objecto cada uno es diferente de los otros.

bueno espero que te sirva de algo lo que te comente.
Bye,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Matriz de winsocks

Publicado por matias (5 intervenciones) el 26/08/2005 18:27:43
'cabe destacar que hay que poner un control winsock(wskClientes) y poner lapropiedad index en 0.

'el index 0 siempre recibe la solicitud, pero la acepta otro winsock(index)

dim IntMax as long

Private Sub Form_Load()
wskClientes(0).LocalPort = 10002 'o el que quieras
wskClientes(0).Listen
intMax=0
End Sub

Private Sub wskClientes_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
IntMax = IntMax + 1
Load wskClientes(IntMax)
wskClientes(IntMax).LocalPort = 0
wskClientes(IntMax).Accept requestID
End If
end sub

Private Sub wskClientes_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strDatoEntrante As String
wskClientes(Index).GetData strDatoEntrante
'hacer lo que necesites con el dato entrante(strDatoEntrante)

end sub

Private Sub wskClientes_Close(Index As Integer)

wskClientes(Index).Close
Unload wskClientes(Index)

End Sub

'seguramente trataras a todos los clientes winsock de la misma manera, asi que es al pedo usar select case('ya que es dificil saber en que orden se va a conectar) por eso tendras que usar el indice(index) por ejemplo:

private sub Responder_Cliente(indice as integer)

wskCliente(indice).SendData "No tengo ganas de responderte"

end sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar