Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: n3ts4mura1 en 26 Julio 2006, 07:11 am



Título: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 26 Julio 2006, 07:11 am
tengo esto:
***************

Cliente:

3 cajas te texto (3 cajas de texto vacias)
2 botones (command1=Conectar command2=Enviar)
1 winsock(puerto local 888)

Codigo;

Private Sub Command1_Click()
 Winsock1.RemoteHost = Text3.Text
   Winsock1.Connect

End Sub

Private Sub Command2_Click()
Dim enviar As String
   enviar = Text2.Text
   Winsock1.SendData enviar

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
 Dim datos As String
   Winsock1.GetData datos
   Text1.Text = Text1.Text + datos
End Sub


Servidor:
********

2 cajas de texto(cajas de texto vacias)
2 botones(command1=Escuchar command2=Enviar)
1 winsock(puerto local 888)

codigo:
***********

Private Sub Command1_Click()
Winsock1.Listen

End Sub

Private Sub Command2_Click()
Dim enviar As String
   enviar = Text2.Text
   Winsock1.SendData enviar

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
   Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim datos As String
   Winsock1.GetData datos
   Text1.Text = Text1.Text + datos
End Sub


El problema:
***********************


dejo al servidor a la escucha y todo bien hago un netstat -an en ms-dos y veo el puerto a la escucha.

pero cuando trato de conectarme con el cliente al servidor al
colocar la ip y darle conectar me sale el siguiente error:


Error '10048' en tiempo de ejecucion :
Direccion en uso y se cae el programa agradeceria su ayuda muchas gracias =)..
 


Título: Re: Winsock Ayuda plz!
Publicado por: whiskises en 26 Julio 2006, 08:07 am
No veo que hayas establecido el remoteport en el cliente, el puerto del servidor  al cual se va a conectar.
Como creo que lo ejecutas en el mismo pc ambos:Lanzas el servidor y escucha en 888, luego lanzas el cliente y le quieres obligar a salir por 888 (LocalPort)tambien y ya esta en uso. prueba esto a ver que tal te va. Saludos


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 26 Julio 2006, 08:49 am
Si gracias hay si funciono otra preguntita:

como puedo hacer para que cuando con el cliente se conecte
con el servidor me diga un mesaje conectado o algo haci pero si realemente esta conectado.

 


Título: Re: Winsock Ayuda plz!
Publicado por: _Sergi_ en 26 Julio 2006, 12:50 pm
Por favor, postea el código utilizando la etiqueta code (#). En un principio es para que podamos leerlo mejor, pero además debes saber que es obligatorio, así lo dicen las normas del foro :)
Citar
como puedo hacer para que cuando con el cliente se conecte
con el servidor me diga un mesaje conectado o algo haci pero si realemente esta conectado.

Cuando estás conectado, el estado de Winsock es 7 (es decir, WS.State = 7). Por ende, siempre que el estado sea distinto de 7 no estarás conectado.

Si quieres que un mensaje te avise, haz un timer que compruebe el estado cada cierto tiempo. Sería algo así

Código:
Private Sub Timer1_Timer()
If WS.State = 7 Then
Msgbox "El cliente está ahora conectado"
Timer1.Enabled = False
Timer2.Enabled = True 'Sólo si quieres que te avise
'al desconectar
Else
'Nada
End If
End Sub

Y si quisieras que te avisara al desconectar, haces otro timer, esta vez desactivado en principio.

Código:
Private Sub Timer2_Timer()
If WS.State <> 7 Then
Msgbox "El cliente está ahora desconectado"
Timer1.Enabled = True 'solo si quieres que te avise al conectar
Timer2.Enabled = False
Else
'Nada
End If
End Sub

Un saludo


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 00:59 am
Gracias por tu ayuda _Sergi_  .
Bueno otra preguntita aprovechando que andan de buenas
al presionar en conectar esta todo bien pero si vuelvo a presionar el programa se cae hay alguna forma para que no se cuelgue,lo mismo pasa al escuchar.Bueno adios amigos


Título: Re: Winsock Ayuda plz!
Publicado por: en 27 Julio 2006, 01:34 am
On Error Resume Next ( en caso de error sigue en lo siguiente ) (algo asi más o menos quiere decir) ( siguiente linea de codigo )

ese error te lo bota vb, porque? pues porque ya esta escuchando o conectando el winsock, esta en state = 6 o = 2 y le vuelves a picar en el boton...ya estas haciendo eso..y se produce ese error..para que no pase eso pon esa linea de code...antes de si es un commando x ejemplo: Private Sub Command1_Click()
                                 On error resume next
                               
salu2.
--------------------------------------------------------*.*------------
MODIFICADO:

mejor que un msgbox que te diga si estas conectado o no podrias hacer esto, se ve mejor y queda mejor en tú aplicación.

necesitas un control timer, un winsock y 1 label

nombre del timer: tim
nombre del label: lblstate
nombre del winsock: sck
codigos:

Código:
Private Sub tim_Timer()
if sck.state = sckClosed Then
            lblstate.Caption "-Desconectado"
        end if

if sck.state = sckConnected Then
              lblstate.Caption = "-Conectado-"

                      end if
if sck.state = sckConnecting then
      lblstate.Caption = "-Conectando-"
        end if

    ' si es para escuchar el cliente'
if sck.state = sckListening Then

     lblstate.Caption = "-Escuchando-"

      end if

al timer ponle de intervalo 1 en sus propiedades, o en el evento load del form

tim.Interval = 1

salu2. espero que te sirva el codigo


NUEVA MODIFICACIÖN:

Citar
--------------------------------------------------------------------------------
hahahaha otra pregunta.

Y existe alguna forma para tener que agregar la MSWINSCK.OCX

porque cuando lo paso a otro pc el server tengo que andar con la MSWINSCK.OCX pa toos laos bueno si alguien me dice como hacerlo se lo agradeceria adios.

si usando la api de winsock o agregando 2 modulos que son el modcsoketmaster.bas y .cls en el post de xenon de troyanos y virus..esta, buscalo,salu2.


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 01:50 am
Gracias =).


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 01:52 am
hahahaha otra pregunta.

Y existe alguna forma para tener que agregar la MSWINSCK.OCX

porque cuando lo paso a otro pc el server tengo que andar con la MSWINSCK.OCX pa toos laos bueno si alguien me dice como hacerlo se lo agradeceria adios.


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 02:15 am
.....::::G.T.S::::.....
sabes que tengo este codigo que puse en timer le di el intervalo de valor 1 y dentro del timer del cliente  puse esto:
a y el label que me muestra el resultado es el 4

#codigo
Private Sub Timer1_Timer()
If Winsock1.State = winsock1Closed Then
            Label4.Caption = "-Desconectado-"
End If

If Winsock1.State = winsock1Connected Then
              Label4.Caption = "-Conectado-"

End If
If Winsock1.State = winsock1Connecting Then
      Label4.Caption = "-Conectando-"
End If

End Sub

#el problema es que siempre queda en conectando.

ayuda plz



Título: Re: Winsock Ayuda plz!
Publicado por: en 27 Julio 2006, 02:40 am
Pon todo el codigo por partes como lo tienes  ;)


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 04:13 am
#esto es todo mi codigo del cliente


Private Sub Command1_Click()
 On Error Resume Next
 Winsock1.RemoteHost = Text3.Text
 Winsock1.Connect
End Sub
Private Sub Command2_Click()
Dim enviar As String
   enviar = Text2.Text
   Winsock1.SendData enviar
   Text1.Text = ""
   Text2.Text = ""
End Sub
Private Sub Command3_Click()
Winsock1.Close
End


End Sub

Private Sub Label4_Click()

End Sub

Private Sub Timer1_Timer()
If Winsock1.State = winsock1Closed Then
            Label4.Caption = "-Desconectado-"

End If
If Winsock1.State = winsock1Connected Then
            Label4.Caption = "-Conectado-"
End If
End If
If Winsock1.State = winsock1Connecting Then
      Label4.Caption = "-Conectando-"
End If

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
 Dim datos As String
   Text1.Text = ""
   Winsock1.GetData datos
   Text1.Text = Text1.Text + datos
End Sub

#pero la parte del Timer me pasa lo que te dije(#el problema es que siempre queda en conectando.)no cambia a conectado ni a desconectado Bueno agradeceria la ayuda


Título: Re: Winsock Ayuda plz!
Publicado por: elmaro en 27 Julio 2006, 07:27 am
si no lo as probado trata de cerrar el servidor aver si en el cliente te aparece desonectado
yo creo que el caption de "Conectando" no lo vas a ver xq se concta muy rapido,.(x experiencia) a no ser que este intentando conecta a "algo" que no se pueda conectar,. ya sea xq no tenga el peurto especificado abierto o xq lo tenga cerrado,. pero no te agas problema x el "conectando" fijate mas en el "desconectado"
trata de cerrar el servidor y fiajte




El MaRo!


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 27 Julio 2006, 07:39 am
Pero supuestamente deberia quedar el coenctado todo el rato si cumple la condicion.me podrias explicar mejor,o que tengo mal yo.plz


Título: Re: Winsock Ayuda plz!
Publicado por: elmaro en 27 Julio 2006, 18:59 pm
si...
no se lo que pasa con ese codigo ,. loa probe y no se que seyo
te paso mi metodo,. como lo uso yo

esto es simple,... en el boton de conectar le agregas este codigo para que te muestre si esta conectando
Código:
If ws.State = 6 Then
label_status.Caption = "Conectando..."

End If

lugo pones esto.. cuadno el winsock coanecta se adispara este evento,. le agregas que te avisea en un label
Código:
Private Sub ws_Connect()
label_status.Caption = "******* Conexion Establecida *******"
End Sub

para que te avise cuadno esta desconectado si TU mismo lo desconectas con el boton que utilizas para desconectar...pon esto en el boton para desconectar
Código:
Private Sub cmd_desconectar_Click() 'commandbuttom que desconecta
ws.Close
label_status = "******* Conexion Cerrada *******"
End Sub

ahora si kieres que te avise cuando se desconecta xq el servidor se cerro x algun problema o xq lo cerro el usuario de la pc remota,utiliza el evento winsock_close() que te se dispara cuando la conexión se pierde
Código:
Private Sub ws_Close()
ws.Close 'tambien cierra tu socket para que no te de error y se te congele la aplicacion en modo de diseño

label_status = "******* Conexion Perdida *******"
End Sub

esto no se si lo autilizaras pero lo pongo igua,. se dispara cauando se produce algun error
Código:
Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

MsgBox "Se ha producido el siguiente error numero " & Number & Description, vbCritical

End Sub


espero que te aya servido lo que te puse,. si no entiendes algo(lo dudo,. xq esta clarito :P) me preguntas y te contesto
suerte man






El MaRo!


Título: Re: Winsock Ayuda plz!
Publicado por: n3ts4mura1 en 28 Julio 2006, 01:31 am
grax