Autor
|
Tema: Programacion en red (Leído 4,890 veces)
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
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
|
|
|
En línea
|
|
|
|
~~
|
|
|
|
En línea
|
|
|
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
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?
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
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
|
|
|
En línea
|
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
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: 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 private sub command1_click() winsock1.connect tuip, puertoservidor end sub
http://www.seomoz.org/ip2loc ahi encuentras tu ip publica. saludos
|
|
|
En línea
|
|
|
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
vaya muchas gracias por la ayuda de verdad me ha sido bastante util 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
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
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: 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: 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 Saludos
|
|
|
En línea
|
|
|
|
Carloswaldo
Traductor
Moderador Global
Desconectado
Mensajes: 4.762
Nos reservamos el derecho de ban.
|
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?
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
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: Private Sub Command1_Click() winsock1.LocalPort = 888 Winsock1.Listen End Sub
y en el cliente... Private Sub Command1_Click() Winsock1.Connect Text3.text, 888 End Sub
Saludos
|
|
|
En línea
|
|
|
|
|
|