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
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?
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
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
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 ;)
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
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 :P
Saludos ;)
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?
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 ;)
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:
Winsock1.SendData enviar
del command2 que es enviar
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 :)
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?
Cita de: HaDeS, - en 29 Agosto 2007, 23:23 PM
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
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:
Dim enviar As String
enviar = Text2.Text
if Winsock1.State = sckConnected then
Winsock1.SendData enviar
else
Msgbox "Imposible enviar datos a la ip de destino"
end if
End Sub
Saludos de nuevo :P
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
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
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
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 :-\
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 ;)
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
Citarno 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??
Cita de: E0N en 31 Agosto 2007, 16:45 PM
Citarno 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 :)
: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
hey y que pasa si ahora quiero enviar el valor de una variable del programa "servidor" a una variable del "cliente" o viceversa?