PDA

Ver la Versión Completa : Conexiones Socket TCP/IP


eduarcol
02-06-2004, 16:45:48
Hola Foro,

A ver tengo una duda tremenda, soy nuevo en la programacion con sockets, he llegado a esto debido a que un sistema que diseñe debe comunicarse con un dispositivo por medio de la red, el dispositivo no es un pc, de hecho este dispositivo envia la informacion por el RS-232 pero debido a la distancia se tuvo que transformar la señal de RS-232 a la red, ok mi gran duda es la siguiente:

Yo puedo hacer un programa escuha que se encargue de recibir datos por el socket sin tener instalado un programa de envios en el dispositivo, de ser asi, los ejemplos comunes de captura de socket me servirian

He estado buscando informacion al respecto pero no he podido sacer nada en claro, lo que les agradeceria si alguien tiene alguna experiencia al respecto y pueda echarme una mano sobre como empezar se lo agradecria un mundo :D

jachguate
02-06-2004, 19:17:35
Si tu dispositivo soporta tcp/ip, se conectará a un puerto específico. Lo que tenes que hacer es poner un TidTCPserver a la escucha por ese puerto (usando INDY, por supuesto).

Para iniciarte en la programación de las INDY, podes descargarte los componentes, y las demos, desde la pagina [url=http://www.indyproject.com]Indy Project[url]. Los componentes estan bien documentados, y husmeando por el código de las demos te podes aclarar muchas cosas sobre su uso inicial.

Hasta luego.

;)

eduarcol
02-06-2004, 19:23:21
Pues me he pasado todo el dia metido en la internet y logre encontrar algo, es la funcion socket de la unidad winsock, ahora segun la ayuda que encontre la funcion utiliza los siguientes parametros:

Socket(PF_INET, SOCK_RAW, 0)

PF_INET, SOCK_RAW: Donde se le indica que es TCP/IP
y 0 que aun no entiendo bien para que se anula ese parametro :confused:

el asunto es que si la funcion devuelve INVALID_SOCKET es que no logro ejecutar la llamada por alguna razon, esa es toda la informacion que logre sacar en claro de la ayuda que me enviaron y la de delphi, recuerden que hay muchos conceptos nuevos para mi :(

eduarcol
02-06-2004, 19:29:31
Un pequeño desliz se me olvido decir que trabajo con Delphi 5 :(

jachguate
02-06-2004, 19:52:34
Y porque no usar componentes que ya encapsulen un socket-server, como el sugerido de las INDY?

eduarcol
02-06-2004, 19:57:51
Si lo voy a usar, lo unico era que no sabia que indy funcionaba para delphi 5 crei que partian de las 6 ya estoy instalandolo luego les comento como van :D

Gracias Jachguate por ayudar

eduarcol
02-06-2004, 21:18:05
Los pongo al tanto de los avances, encontre un manual buenisimo(por supuesto muy basico) de las indy en español

TCP-IP con Indy (www.elrinconcito.com/delphi/articulos/TCPIP/Abajo.htm)

eduarcol
04-06-2004, 00:04:12
Ok sigo avanzando pero ya me pare, con respecto al TIdTCPSErver asumo que no hay que colocarle direccion porq el siempre va a estar a la escucha de un puerto no de una direccion???

y tambien supongo que este puerto se le asigna en default port.

Otra cosa, he tratado de enviar mensajes por el puerto pero le doy BeginWork, ahora donde esta el read o el write???, no entiendo esa parte, por lo poco que he leido he sacado estas dudas en claro :confused:

jachguate
04-06-2004, 01:17:48
Te sugiero que "jugues" un poco con las demos. La del chat puede aclararte bastante...

Por lo pronto puedo decirte que el Server estará a la escucha de un puerto en particular, y via eventos te notifica cuando algun dato llega "a la puerta". Para ponerlo a la escucha, haces active := true, y listo. Luego, usas los métodos Read* (ReadLn, ReadInteger, ReadStream, etc) para leer lo que va llegando de acuerdo al formato esperado.

Hasta luego.

;)

Hasta luego.

;)

DarkByte
04-06-2004, 16:38:48
Mi consejo es que también mires OnAfterCommandHandler, OnBeforeCommandHandler, y los CommandHandler, este úlitmo sobre todo, pues a mí me resulta, por lo menos, muy útil.