elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con Sockets
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Sockets  (Leído 2,322 veces)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Problema con Sockets
« en: 29 Septiembre 2007, 05:00 am »

Hola!, estoy haciendo un programa que redirecciona el tráfico que le llega de un puerto hacia otro, tiene como fin hacer accesibles todas las máquinas de una lan usando como "router" a una que previamente se le han abierto los puertos en el router real. Use getdata pero me daba muchos errores, habian muchos paquetes perdidos y los datos en si son imposibles de interpretar. Cambie getdata por peekdata y mejoró muchisimo, pero solo a nivel localhost. Osea:

Caso winsock.GetData:

localhost---->Redireccionador(Localhost)----->192.168.1.1

Se perdían muchos paquetes.

Caso winsock.PeekData:

localhost---->Redireccionador(Localhost)----->192.168.1.1

Casi perfecto, el 80% de las veces no se perdían paquetes.

Aca viene el problema:

Usando winsock.PeekData:

localhost---->Redireccionador(Otra PC LAN)----->192.168.1.1

La cantidad de paquetes perdidos era increible.

Usando winsock.PeekData:

localhost---->Redireccionador(Otra PC LAN)---->www.yahoo.com.ar

Se perdían tantos paquetes que no recibía bien la request y tampoco se recibía la respuesta de yahoo.com.ar (Bad Request).

Ahora, mis pregunta es la siguiente: Hay alguna manera de esperar a que los datos se hayan enviado/recibido, antes de tratar de enviar/recibir otra tanda de datos nueva?.


Saludos!!


En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Problema con Sockets
« Respuesta #1 en: 30 Septiembre 2007, 18:47 pm »

Alguien que me pueda dar una respuesta??  :( :(


En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Problema con Sockets
« Respuesta #2 en: 30 Septiembre 2007, 23:39 pm »

hola no se bien como estas haciendo las cosas, pero creo que lo que vos buscas es el evento winsock1_SendComplete , yo lo que ago a menudo es poner una variable tipo boolean en el general y cuando se da este evento la paso a true entonces sigo enviando los paquetes, para el caso de recivir los datos si trabajas con html se supone que recives los paquetes completos justo cuando se cierra la conexion.

es algo asi lo que preguntas?

bueno , nose, te comento si estas trabajando con array de conexiones, yo tuve y tengo mala experiencia con este tema, no se si sea un problema de el winsock.ocx o visual b o mio. pero si intento enviar datos al mismo tiempo con mas de una conexion no jala como deberia.

Saludos


 
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Problema con Sockets
« Respuesta #3 en: 1 Octubre 2007, 00:17 am »

El send anda bien, el problema es el receive. Alguna otra sugerencia???
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Problema con Sockets
« Respuesta #4 en: 2 Octubre 2007, 19:19 pm »

Debes tener en cuenta que puedes hacer un send del tamaño que te dé la gana pero en la otra parte los datos completos enviados lo vas a recibir en varios eventos data_arryval (o como se escriba) distintos.
Imagino que lo que haces es un
tal.getdata buff
tal2.senddata buff
Entonces en getdata solo has recibido una parte y por lo tanto solo envias una parte del paquete.

No recuerdo muy bien los eventos de winsock en vb pero sin usar ninguno de ellos lo que puedes hacer es en cada send enviar el tamaño total de los datos que se pretenden enviar y en el getdata ir acumulando todo en un buffer hasta llegar a este tamaño antes de hacer el send a la parte final.

Espero haberte entendido y aclarado algo.

Saludos.
En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Problema con Sockets
« Respuesta #5 en: 4 Octubre 2007, 05:05 am »

Es buena esa, cuando tenga tiempo lo pruebo. Mil Gracias

PD: Probado  :P no anda, el tema es que eso no lo puedo hacer, ya que el paquete no lo manda un programa hecho por mi, sino un servidor http en este caso.
« Última modificación: 4 Octubre 2007, 05:20 am por APOKLIPTICO » En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Ferсhu


Desconectado Desconectado

Mensajes: 1.215

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema con Sockets
« Respuesta #6 en: 4 Octubre 2007, 06:45 am »

winsock1_SendComplete, Es solo un evento q se activa cuando todo se envio, en control winsock no sabe si se perdieron o no paketes, solo activa el evento cuando termino de enviar todo.

Para mi el control de winsock no es muy confiable con paketes Tcp, me parece ami. Udp en una red va bien.

Citar
localhost---->Redireccionador(Localhost)----->192.168.1.1

usas 2 winsock o el mismo??

tmb creo q podes hacer tambytes=winsock.getdata buffer, y cuando no llega el tamaño maximo te das cuenta por tambytes, entonces armas el buffer y lo envias entero, pero nose como haces si mandas a medida q llegan o esperas a recibir todo y envias un pakete entero.
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Problema con Sockets
« Respuesta #7 en: 4 Octubre 2007, 20:02 pm »

Código
  1. Private Sub Ws_DataArrival(ByVal bytesTotal As Long)
  2. 'On Error Resume Next
  3. Dim data
  4. Ws.GetData data
  5. data = StrConv(data, vbUnicode)
  6. Do Until ws1.State = 7 Or ws1.State = 9
  7. DoEvents
  8. Loop
  9. ws1.SendData data
  10. End Sub
  11.  
  12. Private Sub ws1_DataArrival(ByVal bytesTotal As Long)
  13. 'On Error Resume Next
  14. Dim data
  15. ws1.PeekData data
  16. data = StrConv(data, vbUnicode)
  17. Ws.SendData data
  18. End Sub

De esto se trata
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Ferсhu


Desconectado Desconectado

Mensajes: 1.215

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Problema con Sockets
« Respuesta #8 en: 4 Octubre 2007, 20:53 pm »

Citar
data = StrConv(data, vbUnicode)

No entiendo para q esto si vb ya trabaja con unicode.

Citar
Do Until ws1.State = 7 Or ws1.State = 9
DoEvents
Loop
ws1.SendData data

Podrias probar de poner ws1.SendData, en el evento Ws_SendComplete, ademas es mas simple.

data podrias explicitar q es string, sino creo q lo toma como variant, si no recuerdo mal  :-\
En línea

APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.871


Toys in the attic.


Ver Perfil
Re: Problema con Sockets
« Respuesta #9 en: 6 Octubre 2007, 23:12 pm »

Si, es verdad todo lo que decis pero el problema no esta ahi...
Alguna otra sugerencia?
Salu2
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Problema] Conexión Sockets
Programación C/C++
farresito 7 3,366 Último mensaje 5 Abril 2011, 23:01 pm
por poitier
Problema con Sockets vb.net
.NET (C#, VB.NET, ASP)
CH4ØZ 4 2,091 Último mensaje 29 Julio 2011, 21:50 pm
por CH4ØZ
Problema con sockets WinSock2 « 1 2 »
Programación C/C++
Riki_89D 19 6,032 Último mensaje 27 Septiembre 2011, 19:52 pm
por naderST
Problema sockets entre xp y w7
Programación C/C++
d00ze13 1 1,533 Último mensaje 16 Noviembre 2011, 15:25 pm
por Eternal Idol
PROBLEMA con SOCKETS y GUI
Java
reylagarto19 1 1,152 Último mensaje 31 Julio 2012, 22:01 pm
por reylagarto19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines