Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Carloswaldo en 29 Agosto 2007, 20:38 pm



Título: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 20:38 pm
hola amigos, tengo una duda, quisiera crear un programa en vb para jugar en red (algo parecido al pokemon netbattle), se algo de programacion en vb pero nada de redes, si alguien me puede ayudar con un manual o algo, gracias

c-ya  :P


Título: Re: Programacion en red
Publicado por: ~~ en 29 Agosto 2007, 21:00 pm
Busca sobre sockets:

Sockets

Introducción al control Winsock en Visual Basic
http://foro.elhacker.net/index.php/topic,17665.msg233177.html#msg233177

ME URGE MANUAL WINSOCK :/
http://foro.elhacker.net/index.php/topic,22027.msg112656.html#msg112656

Winsock: el cliente recibe un archivo mayor del que le envian, ¿por qué?
http://foro.elhacker.net/index.php/topic,63330.0.html

API de Winsock para VB (Completa)
http://foro.elhacker.net/index.php/topic,62753.0.html

Un troyano fácil con Winsock
http://foro.elhacker.net/index.php/topic,6666.msg35679.html

Usando Winsock para enviar HTTP
http://www.fpress.com/revista/Num0701/art.htm

¿Cómo enviar Struct con control winsock en Visual Basic?
http://foro.elhacker.net/index.php/topic,67408.0.html

Enviar Archivos grandes con Winsock
http://www.kizar.net/foro/index.php?topic=617.0

Winsock y cadenas Hexadecimales
http://foro.elhacker.net/index.php/topic,69812.0.html


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 21:29 pm
gracias, bueno la verdad tuve que buscar un poco porque algunos links ya estan viejos y no existen... pero ya encontre algo y estoy empezando en esto de winsock, ahora tengo otra duda, bueno en una aplicacion de prueba puse un control winsock "winsock1" y en uno de los tutoriales se menciona la propiedad "localip", para probarla hice esto, puse un command y en el codigo:

Código:
MsgBox (Winsock1.LocalIP)

osea que cuando presione el command button me va a salir un cuadro de texto con mi ip, pero la cosa es que ahi sale la ip que uso dentro de mi red local (en los letreritos que salen en internet de "su ip es... esta usando..." me sale una ip completamente diferente) a que se debe esta diferencia?


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 21:35 pm
Sale tu IP porque estas seguro detras de un router, el manual minimo es de los años en que se usaba conexion a internet conmutada, y la IP se asignaba directamente. Los routers son como un tipo de lan, asi que te sale en vez de tu ip publica, el numero ip de tu lan.
saludos :P


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 21:38 pm
y hay algun inconveniente con eso en la programacion de aplicaciones "cliente-servidor"? que ip uso para comunicarme con otro equipo fuera de mi red? gracias, esto leyendo esto:

http://www.elguruprogramador.com.ar/articulos/aplicaciones-cliente-servidor-en-visual-basic-utilizando-el-control-winsock.htm

c-ya  :P


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 21:52 pm
Nop, no hay incoveniente, es solo question de manejar eso de las ips, eso de el LocalIp solo funciona como un dato extra.
Mira por ejemplo esto:
Código
  1. Private sub command1_click()
  2. winsock1.connect 216.93.175.74, 80
  3. 'Conecta a la ip 216.93.175.74 en el puerto 80
  4. End Sub
  5.  
Utiliza la ip del lado remoto si es que queres ser el cliente.
Al contrario si queres ser el servidor, haz que los clientes se conecten a tu ip, pero a tu ip publica, la que te asigna el router o tu isp
Código
  1. private sub command1_click()
  2. winsock1.connect tuip, puertoservidor
  3. end sub
  4.  
http://www.seomoz.org/ip2loc ahi encuentras tu ip publica.
saludos ;)


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 22:02 pm
vaya muchas gracias por la ayuda de verdad me ha sido bastante util  ;D

y bueno como ya mencione, no se casi nada de redes, ip, etc... asi que ahi va otra pregunta, en puerto servidor que pongo? que es un puerto? gracias nuevamente

c-ya  :P


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 22:19 pm
Claro mira, un puerto es una numeracion que se le da a las conexiones, no tiene nada que ver con la parte de hardware, por esta es donde se mandan y reciben los datos, es como un tipo de canal.
Los servidores siempre deben estar a la escucha en algun puerto, me parece que los puertos van desde el 0 hasta el 65536, por ejemplo la mayoria de servidores web, estan a la escucha del puerto 80, los ftp en el 21, los smtp en el 25, es una generalizacion.

En el codigo de tu programa (Servidor), tenes que poner al winsock a la escucha de tal puerto. por ejemplo:
Código
  1. private sub command1_click()
  2. winsock1.localport = 80 'Puerto por el cual se reciben los datos
  3. winsock1.listen
  4. end sub
  5.  
Lo que hace ese codigo es estar a la escucha en el puerto 80.

Entonces en la parte del cliente pones:
Código
  1. private sub command1_click()
  2. winsock1.connect 127.0.0.1, 80 'El puerto que esta a la escucha
  3. '127.0.0.1 o localhost, indican el sistema local, podes probar primero localmente y luego remotamente
  4. end sub
  5.  

Creo que es eso :P
Saludos ;)


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 22:55 pm
he intentado hacer la aplicacion de ejemplo de la pagina que mencione, el servidor es este (en las propiedades del winsock ya he colocado el puerto, 888):

Código:
Private Sub Form_Load()

End Sub

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

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

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

el cliente es este:

Código:
Private Sub Command1_Click()
Winsock1.RemoteHost = Text3.Text
Winsock1.Connect
End Sub

Private Sub Form_Load()

End Sub

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

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

al aplastar en escuchar del uno va bien pero si aplasto en el otro me sale error, que estoy haciendo mal?


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 23:07 pm
Pues, el codigo esta bien, haz esto, en la aplicacion del servidor, el que pones a la escucha, la propiedad localport es puerto 888. Por el contrario, en la aplicacion del cliente, la propiedad localport debe estar vacia, mientras que la propiedad remoteport debe ser 888.

O sin propiedades podes poner, en el servidor:
Código
  1. Private Sub Command1_Click()
  2. winsock1.LocalPort = 888
  3. Winsock1.Listen
  4. End Sub
  5.  

y en el cliente...
Código
  1. Private Sub Command1_Click()
  2. Winsock1.Connect Text3.text, 888
  3. End Sub
  4.  

Saludos ;)


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 23:19 pm
sip en eso estaba fallando habia puesto en los dos localport  ;D, ahora no tengo problemas con el boton de escuchar pero al poner el boton de enviar me sale este error:

Citar
Error '40006' en tiempo de ejecución:

Protocolo o estado de conexión erróneo para la transacción o petición solicitada

si pongo depurar me envia a esta linea de aqui:

Código:
Winsock1.SendData enviar
del command2 que es enviar


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 23:23 pm
Te tenes que asegurar de que el servidor este a la escucha, y que para enviar datos tiene que tener un receptor, no podes enviarle datos a una conexion vacia.
Lo mismo ocurre con el cliente, primero debe estar conectado para poder enviar datos.
Saludos :P, si alguna duda, me estoy pasando por aca jaja que me anime a ayudar :)


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 23:27 pm
pues nada amigo, a los dos les hago estar conectados y me sigue saliendo ese error, ah! por cierto estoy usando mi ip publica en el text3 del cliente, esta bien eso?

si alguna duda, me estoy pasando por aca jaja que me anime a ayudar :)
si quisiera hacer publica mi aplicacion creo que tendria que darte credito  :P, muchas gracias por la ayuda (hasta te hice llegar a tu mensaje numero 100  ;D)

c-ya  :P


Título: Re: Programacion en red
Publicado por: HaDeS, - en 29 Agosto 2007, 23:36 pm
Jajaj gracias por el mensaje 100 :P, entonces lo que pasa es que no se esta alcanzando a conectar el cliente al servidor, porque tu router debe estar filtrando la conexion. Mejor utiliza de ip "127.0.0.1" que es la ip privada. Creo que asi te podria funcionar :P y pues de nada, estoy para compartir conocimiento...
Saludos ;)

En la parte de enviar datos podes hacer esto:
Código
  1. Dim enviar As String
  2. enviar = Text2.Text
  3. if Winsock1.State = sckConnected then
  4.    Winsock1.SendData enviar
  5. else
  6.    Msgbox "Imposible enviar datos a la ip de destino"
  7. end if
  8. End Sub
  9.  

Saludos de nuevo :P


Título: Re: Programacion en red
Publicado por: Carloswaldo en 29 Agosto 2007, 23:45 pm
FUNCIONO FUNCIONOOOOOOOOOOO!!!!!!

jaja, muchas gracias y desde ahora puedes considerarte parte de mis amigos respetables  :P :xD

nos vemos en el foro  ::)

c-ya  :P


Título: Re: Programacion en red
Publicado por: Carloswaldo en 30 Agosto 2007, 01:03 am
ya estoy probando con esto pero tengo otra duda, que hago para poder comunicarme con otra computadora en la red (cliente), me funciona con la ip privada (127.0.0.1) pero que pasa si quiero probar otra ip? por que me filtra la conexion el router? hay forma de burlarlo?

c-ya  :P


Título: Re: Programacion en red
Publicado por: HaDeS, - en 30 Agosto 2007, 01:06 am
La conexion se te filtraba porque lo que hace el cliente es ir hasta fuera de tu router y regresar, pero al regresar debe haber una regla que diga filtrar tal puerto. Lo que podes hacer es mejor vos cargas el cliente y que en otra pc este el servidor, asi no se te filtra la conexion. La conexion de salida si da, pero de entrada no...

Saludos :P


Título: Re: Programacion en red
Publicado por: Carloswaldo en 30 Agosto 2007, 06:04 am
hola ya estoy aqui con nuevas inquietudes jeje, bueno como ya dije he probado los programas de prueba "cliente" y "servidor" con la ip privada y funciona, pero ahora los lleve a la practica, mande el programa cliente a una amiga para probar pero nop (al pulsar enviar sale el cuadrito de Msgbox "Imposible enviar datos a la ip de destino")... probe con el cliente y con el server pero nada, y mencionar que a ella le sale la misma ip que yo en la pagina que me diste  :-\


Título: Re: Programacion en red
Publicado por: HaDeS, - en 30 Agosto 2007, 06:09 am
Me suena a conexion de una parte de argentina, Zinc sabe de que hablo :P, me parece que tu ISP asigna la misma IP para cada usuario, entonces la conexion saliente es una misma ip, y ni modo de comunicarte con ella, ahi te mando mi msn para que miremos que si da :P
Saludos ;)


Título: Re: Programacion en red
Publicado por: Carloswaldo en 30 Agosto 2007, 20:29 pm
oye amigo pero le acabo de preguntar a mi amiga cual es su isp y resulta que es otro !!  :huh: no se supone que no pueden haber dos equipos con ip iguales en internet  :huh: :huh: iluminadme


Título: Re: Programacion en red
Publicado por: ~~ en 31 Agosto 2007, 16:45 pm
Citar
no se supone que no pueden haber dos equipos con ip iguales en internet

No, no puede haberlos a no ser q pertenezcan a la misma lan, q entonces tomarian los dos la misma ip en internet....

No sera q tu amiga te esta dando su ip local? por casualidad empieza por 10, 192 o 172??


Título: Re: Programacion en red
Publicado por: HaDeS, - en 31 Agosto 2007, 21:02 pm
Citar
no se supone que no pueden haber dos equipos con ip iguales en internet

No, no puede haberlos a no ser q pertenezcan a la misma lan, q entonces tomarian los dos la misma ip en internet....

No sera q tu amiga te esta dando su ip local? por casualidad empieza por 10, 192 o 172??

Ya esta todo solucionado EON, Carloswaldo le aviso a su amiga que se metiera a otra pagina para localizar la ip, y efectivamente es lo misma.
saludos :)


Título: Re: Programacion en red
Publicado por: abel_c_b en 4 Septiembre 2007, 20:11 pm
 :D hola amigos, he estado leyendo sus mensajes y me parece interesante, quisiera saber como termino el problema, ahh : carloswaldo y HaDes me regalarian su Msn para hablar mejor, gracias


Título: Re: Programacion en red
Publicado por: Carloswaldo en 6 Septiembre 2007, 05:02 am
hey y que pasa si ahora quiero enviar el valor de una variable del programa "servidor" a una variable del "cliente" o viceversa?