Visual Basic - Reformulo UDP

Life is soft - evento anual de software empresarial
 
Vista:

Reformulo UDP

Publicado por nacho (9 intervenciones) el 14/03/2005 18:19:07
Creo que he liado un poco mi problema, lo voy a replantear:
Me gustaria hacer una aplicacion UDP que se comporte como cliente, y se conecte a una IP y un puerto dado por el servidor y, me escriba en una caja de texto los datos recibidos.
Solo consigo hacer un programa que me reciba datos como server
Muchas gracias de nuevo
Nacho
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reformulo UDP

Publicado por Benjo (679 intervenciones) el 14/03/2005 20:36:03
Nacho, con la utiliación de UDP, tu aplicación es tanto servidor como cliente. No es como TCP.
Por eso vos podés cambiar el puerto remoto y el Bind como puerto local, utilizando los puertos que vos quieras para emiti y para recibir en la misma aplicación.
El error que te envia, puede que sea que la aplicación ala que vos llamás servidor, ya este también ocupando el puerto de enlace y por lo tanto te devuelve un error.
MSDN dice:

Debido a que ambos equipos se pueden considerar "iguales" en la relación, se podría llamar una aplicación de igual a igual.
Debe invocar el método Bind al crear una aplicación UDP. Este método "reserva" un puerto local para uso del control. Por ejemplo, al enlazar el control al número de puerto 1001, ninguna otra aplicación podrá usar ese puerto para "escuchar". Esto puede ser muy útil si desea impedir que otra aplicación utilice ese puerto.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UDP me estoy volviendo loco

Publicado por Nacho (2 intervenciones) el 14/03/2005 23:39:40
gracias por la respuesta Benjo, pero no he conseguido ponerlo en practica.
Aqui os mando como tengo el programa, que tiene que recibir informacion del puerto 12346 de mi ordenador:
el formulario tiene: un boton (command1) una caja de texto (text1) y el control winsock (winsock1) y, quiero que me escriba en la caja de texto lo que reciba del puerto 12346

Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 12346
Winsock1.Protocol = sckUDPProtocol
End Sub

Private Sub Command1_Click()
Winsock1.Connect
End Sub

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

estoy bloqueado :(
muchas gracias again :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UDP me estoy volviendo loco

Publicado por Benjo (679 intervenciones) el 14/03/2005 23:59:06
EL protocolo UDP no utiliza Connect , eso es para TCP

Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 12346
Winsock1.Protocol = sckUDPProtocol
'Podes intercambiar el port de RemotePort y de Bind según corresponda
End Sub

Private Sub Command1_Click()
Winsock1.Bind 80
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datosrec As String
Winsock1.GetData datosrec
Text1.Text = datosrec
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UDP ya casi loco de remate :P

Publicado por Nacho (9 intervenciones) el 15/03/2005 00:35:15
nada :( me sigue pasando lo mismo, al añadirle la linea de Bind 80 solo me lee lo que me llega a ese puerto y lo que me interesa es que lea lo que emite el 12346
y si hago bind 12346 me dice Adress in use

lo que deberia hacer es:
hola 127.0.0.1 puerto 12346 me quiero conectar a ti (eso al apretar el boton)
y una vez que se ha conectado al puerto escirbir lo que sale de el en la caja de texto

Bueno, me voy a dormir a ver si la almohada me da algun consejillo
muchas gracias por intentar ayudarme :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UDP ya casi loco de remate :P

Publicado por Benjo (679 intervenciones) el 15/03/2005 01:28:28
Address in Use es porque el puerto 12346 ya está siendo utilizado . Tal como te comenté en el primer Post.

"Al enlazar el control al número de puerto ?????, ninguna otra aplicación podrá usar ese puerto para "escuchar". Esto puede ser muy útil si desea impedir que otra aplicación utilice ese puerto"
El programa cuya comunicación vos querés capturar, seguramente ya está haciendo uso del puerto 12346 para escuchar su propia información, por eso vos no podés enlazar a ese mismo Port.
Consultá con el que hizo el programa, y si el Source está a mano, pues evitá que cualqueira de sus componente entable comunicación a través del puerto 12346.
Otra cosa que se me ocurre podés hacer es hacer correr primero tu aplicación y por último la aplicación servidor, para ocupar primero el puerto 12346. Igual supongo que esto provocaría un fallo en la aplicación servidor y si está bien trabajada, seguramente cambiaría de puerto.
Lamento no poder serte de mayor utilidad.
Mucha suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar