Winsock conexiones multiples ¿como?

Iniciado por Shrick, 26 Octubre 2008, 12:52 PM

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

Shrick

Buenas tras ver algo de python y traducir alguna que otra aplicación de vb a python, me gustaría profundizar un poco más en vb, para luego trasladar lo aprendido a gambas.

Según he leído en el formulario, puedes meter un componente socket denominado Winsock o similar, que me permite conectarme con otro ordenador a través de Internet, luego también me pareció leer que solo se puede realizar una conexión por componente winsock.

Quiero saber si es posible a través de un winsock para hacer múltiples conexiones.

Espero que se me entienda.
Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .

& eDu &

Tu puedes hacer lo siguiente creo !

                   -Cliente    -Cliente
Tu (Servidor)-
                   -Cliente
                              -Cliente
y muchas mas.

Shrick

#2
Consegui algo haciendo y array/matriz de Winsocket mirando por hay, ahora tengo el problema, para enviar mensaje desde servidor a clientes.

Private Sub bntSend_Click()
On Error GoTo errorSub

Dim i As Integer

    i = 0
    While (i < intMax)
    Winsock1(i).SendData txtSend
   
    txtLog = txtLog & "Servidor : " & txtSend & vbCrLf
    txtSend = ""
   
    i = i + 1
   
    Wend

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description
' cierra la conexión
Winsock1_Close (intMax)
End Sub


El code lo pille de recursosvb y lo del uso de array winsocket mirando en google.

El error es que necesito saber como se envia mensaje de servidor a clientes.

IMAGEN:

Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .


vivachapas

mmm si buscaras en google "conexion multiple winsock vb" ya salen ejemplos... luego si no los entienden te los puedo explicar....
es sencillo cada winscok realiza solo una conexion
para tener multiples creas un array... osea.. muchos winsocks x asi decirlo
para saber q mandarle a cada servidor lo q haces es:

Winsock1(index).senddata "lo q quieras"

donde index es el numero de array del winsock q deseas usar :P


SALUDOS

Shrick

Si he mirado en lo de monografias y no me va lo tengo puesto asi:

Código (vb) [Seleccionar]
Private Sub bntSend_Click()
On Error GoTo errorSub

Dim i As Integer
Dim Max As Integer

Max = Winsock1.Bound
    i = 0
    For i = 0 To Max
    If Winsock1(i).State = sckConnected Then
    Winsock1(i).SendData (txtSend)
   
    txtLog = txtLog & i & vbCrLf
   
    End If
    Next
   
    txtLog = txtLog & "Servidor : " & txtSend & vbCrLf
    txtSend = ""

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description
' cierra la conexión
Winsock1_Close (intMax)
End Sub


En Teoria deberia funcionar pero solo envia información al segundo cliente...
Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .

vivachapas

mira, asi lo hago yo:

fijate q vas a tener q cambiar el nombre del Winsock1 a WS, tb tenes q poner la propiedad Array en valor 0

Código (vb) [Seleccionar]
Private Sub WS_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim NumSock As Integer
Dim i As Integer
NumElem = WS.UBound
For i = 1 To NumElem
If WS(i).State <> 7 Then
WS(i).Close
WS(i).Accept requestID
Exit Sub
End If
Next
Load WS(NumElem + 1)
NumSock = WS.UBound
WS(NumSock).Accept requestID
End Sub


proba y avisame

APOKLIPTICO

No uses el puerto 123, es de windows....
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Angeldj27

#8
Creo que Karcrack posteo un codigo basico de multiconexiones con Winsock solo tienes que buscar por el Foro

Edit:  Es Aky Escusame


"Que vamos a hacer Mañana?..... Lo mismo que hacemos todos los dias Pinky tratar de Conquistar el Mundoooo!!!!!

juancho77

Porque no pruebas a usar CSocketMaster y CSocketPlus.
Son objetos que emulan un control Winsock, permitiendo, entre otras cosas que el programa no dependa de los controles mencionados instalados en la PC y ademas ofrece un manejo mucho mas simple para crear y distribuir arrays de este componente.
La web es http://www.geocities.com/anshoku/index.html

Tiene unos tutoriales por ahi tambien. Los comandos son los mismos CASI que para el Winsock.