Programacion en red

Iniciado por Carloswaldo, 29 Agosto 2007, 20:38 PM

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

Carloswaldo

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

~~

Busca sobre sockets:

Cita de: NekroByte en 29 Marzo 2007, 01:18 AM
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

Carloswaldo

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:

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?

HaDeS, -

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

Carloswaldo

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

HaDeS, -

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 (vb) [Seleccionar]

Private sub command1_click()
winsock1.connect 216.93.175.74, 80
'Conecta a la ip 216.93.175.74 en el puerto 80
End Sub

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 (vb) [Seleccionar]

private sub command1_click()
winsock1.connect tuip, puertoservidor
end sub

http://www.seomoz.org/ip2loc ahi encuentras tu ip publica.
saludos ;)

Carloswaldo

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

HaDeS, -

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 (vb) [Seleccionar]

private sub command1_click()
winsock1.localport = 80 'Puerto por el cual se reciben los datos
winsock1.listen
end sub

Lo que hace ese codigo es estar a la escucha en el puerto 80.

Entonces en la parte del cliente pones:
Código (vb) [Seleccionar]

private sub command1_click()
winsock1.connect 127.0.0.1, 80 'El puerto que esta a la escucha
'127.0.0.1 o localhost, indican el sistema local, podes probar primero localmente y luego remotamente
end sub


Creo que es eso :P
Saludos ;)

Carloswaldo

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):

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:

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?

HaDeS, -

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 (vb) [Seleccionar]

Private Sub Command1_Click()
winsock1.LocalPort = 888
Winsock1.Listen
End Sub


y en el cliente...
Código (vb) [Seleccionar]

Private Sub Command1_Click()
Winsock1.Connect Text3.text, 888
End Sub


Saludos ;)