dec
26-08-2012, 11:33:18
Hola a todos,
Me he decidido por abrir un hilo a ver si alguien puede echarme una mano, contestar algo al respecto, darme alguna idea, etc. Resulta que hace tiempo que vengo dando vueltas a cierto proyecto que trate de establecer conexiones TCP/IP, es decir, en pocas palabras, dicho proyecto o aplicación debería poder actuar como servidor y también como cliente, de manera que pudiera comunicarse con otras aplicaciones.
Me he planteado el asunto no pocas veces, pero, nunca he terminado de concretar nada. Algo importante, aunque, tal vez algo irracional, para mi proyecto, es que la misma aplicación pudiera actuar de servidor y de cliente a la vez, cosa que no he logrado con algunos de los componentes que he tratado de utilizar a lo largo del tiempo en que llevo dando vueltas al tema. Por ejemplo, con los componentes Indy, no he podido lograr este objetivo.
He tratado de utilizar todos los componentes que he ido encontrando, y he probado varios de ellos, también con la intención de no utilizar los componentes Indy u otros paquetes de componentes "grandes", en definitiva, tratando de mantener cierta independencia de mi proyecto respecto de grandes paquetes de componentes, pues, todos sabemos que Indy es mucho más que TCP/IP, afortunadamente, pero, yo preciso sólo esto último.
Pues bien. Resulta que he tenido siempre en mis narices el paquete de componentes "dclsockets.*", que, no viene instalado por defecto en Delphi, a partir de Delphi 6, me parece. No viene instalado por defecto, pero, dicho paquete de componentes se distribuye junto a Delphi, al menos en Delphi 2007 y hasta en Delphi XE2. Estoy hablando de los componentes "TServerSocket" y "TClientSocket", y que, aparentemente, cumplen casi a la perfección con lo que me había planteado en un principio.
Haciendo pruebas, veo que puedo hacer que una aplicación se comporte como servidor y como cliente. Que puedo "instanciar" varios clientes conectándolos al servidor y enviando y recibiendo texto (no Unicode) sin problemas. Además los componentes parecen más o menos sencillos de usar, y, hasta donde he llegado, parecen libres de errores, en el sentido de que su tratamiento también es sencillo y no se producen problemas "raros" o de "desconocida procedencia" para mí.
Creo que me estoy enrrollando demasiado y pido disculpas por ello. Los problemas o preguntas que se me plantean son más o menos las siguientes:
1º ¿Hay algo malo con estos componentes? Quiero decir, que, desaparecieron de la paleta en Delphi 6, aunque siguen estando disponibles, y, no encuentro que la unidad que los contiene en Delphi XE2 los marque como "deprecated" (¿depreciados?) o algo así. Yo he hecho pruebas en Windows 7 y todo parece funcionar bien, como digo, y, a falta de probar en Windows 8, diría que tampoco ahí tendrán problemas.
2º He leído en algunos lugares que dichos componentes hacen uso de ciertas características de Windows que han sido superadas, y, así se recomienda usar Indy, ICS o Synapse, por ejemplo, en lugar de los primeros. Pero considero confuso el uso de TCP/IP mediante los componentes que Indy tiene, o, como he dicho más arriba, preferiría utilizar algo más "sencillo". Por lo demás, ¿cómo es posible que los componentes sobre las "viejas" características de Windows *me* funcionen tan bien?
3º ¿Vosotros usaríais los componentes "TServerSocket" y "TClientSocket"? ¿Los estáis usando? ¿Preferís otros? Me parece curioso que en Delphi vengan de forma predeterminada los componentes "TTcpServer" y "TTcpClient", puesto que, aunque posteriores (si no me equivoco) no he conseguido tan buenos resultados con estos que con aquellos. ¿Me estaré volviendo loco, doctor? ¿Los componentes que se supone tenían que sustituir a los antiguos resultan peores? Pero esto no puede ser... sin duda el problema soy yo y no otra cosa.
En definitiva, a ver si podéis echarme una mano en este asunto. Todavía me quedaría encontrar la forma de enviar texto "unicode" con los componentes susomentados, aunque, estoy tan entusiasmado con ellos, que, incluso lo daría como una funcionalidad, simplemente, "no disponible" en la aplicación, supuesto que el resto del texto (ASCII) podría ser enviado y recibido sin problemas. Otra cosa sería el envío de archivos, una funcionalidad que se me hace duro dejar como "no disponible", supuesto que he hecho algunas pruebas y no he dado pie con bola.
Y eso es todo. Espero no haberte aburrido demasiado si has llegado hasta aquí. Seguramente tú sepas decirme algo sobre la "historia" que puede haber detrás de "TServerSocket" y "TClientSocket", y hasta de la historia que puede haber delante... cualquier comentario será bienvenido.
¡Muchas gracias!
Me he decidido por abrir un hilo a ver si alguien puede echarme una mano, contestar algo al respecto, darme alguna idea, etc. Resulta que hace tiempo que vengo dando vueltas a cierto proyecto que trate de establecer conexiones TCP/IP, es decir, en pocas palabras, dicho proyecto o aplicación debería poder actuar como servidor y también como cliente, de manera que pudiera comunicarse con otras aplicaciones.
Me he planteado el asunto no pocas veces, pero, nunca he terminado de concretar nada. Algo importante, aunque, tal vez algo irracional, para mi proyecto, es que la misma aplicación pudiera actuar de servidor y de cliente a la vez, cosa que no he logrado con algunos de los componentes que he tratado de utilizar a lo largo del tiempo en que llevo dando vueltas al tema. Por ejemplo, con los componentes Indy, no he podido lograr este objetivo.
He tratado de utilizar todos los componentes que he ido encontrando, y he probado varios de ellos, también con la intención de no utilizar los componentes Indy u otros paquetes de componentes "grandes", en definitiva, tratando de mantener cierta independencia de mi proyecto respecto de grandes paquetes de componentes, pues, todos sabemos que Indy es mucho más que TCP/IP, afortunadamente, pero, yo preciso sólo esto último.
Pues bien. Resulta que he tenido siempre en mis narices el paquete de componentes "dclsockets.*", que, no viene instalado por defecto en Delphi, a partir de Delphi 6, me parece. No viene instalado por defecto, pero, dicho paquete de componentes se distribuye junto a Delphi, al menos en Delphi 2007 y hasta en Delphi XE2. Estoy hablando de los componentes "TServerSocket" y "TClientSocket", y que, aparentemente, cumplen casi a la perfección con lo que me había planteado en un principio.
Haciendo pruebas, veo que puedo hacer que una aplicación se comporte como servidor y como cliente. Que puedo "instanciar" varios clientes conectándolos al servidor y enviando y recibiendo texto (no Unicode) sin problemas. Además los componentes parecen más o menos sencillos de usar, y, hasta donde he llegado, parecen libres de errores, en el sentido de que su tratamiento también es sencillo y no se producen problemas "raros" o de "desconocida procedencia" para mí.
Creo que me estoy enrrollando demasiado y pido disculpas por ello. Los problemas o preguntas que se me plantean son más o menos las siguientes:
1º ¿Hay algo malo con estos componentes? Quiero decir, que, desaparecieron de la paleta en Delphi 6, aunque siguen estando disponibles, y, no encuentro que la unidad que los contiene en Delphi XE2 los marque como "deprecated" (¿depreciados?) o algo así. Yo he hecho pruebas en Windows 7 y todo parece funcionar bien, como digo, y, a falta de probar en Windows 8, diría que tampoco ahí tendrán problemas.
2º He leído en algunos lugares que dichos componentes hacen uso de ciertas características de Windows que han sido superadas, y, así se recomienda usar Indy, ICS o Synapse, por ejemplo, en lugar de los primeros. Pero considero confuso el uso de TCP/IP mediante los componentes que Indy tiene, o, como he dicho más arriba, preferiría utilizar algo más "sencillo". Por lo demás, ¿cómo es posible que los componentes sobre las "viejas" características de Windows *me* funcionen tan bien?
3º ¿Vosotros usaríais los componentes "TServerSocket" y "TClientSocket"? ¿Los estáis usando? ¿Preferís otros? Me parece curioso que en Delphi vengan de forma predeterminada los componentes "TTcpServer" y "TTcpClient", puesto que, aunque posteriores (si no me equivoco) no he conseguido tan buenos resultados con estos que con aquellos. ¿Me estaré volviendo loco, doctor? ¿Los componentes que se supone tenían que sustituir a los antiguos resultan peores? Pero esto no puede ser... sin duda el problema soy yo y no otra cosa.
En definitiva, a ver si podéis echarme una mano en este asunto. Todavía me quedaría encontrar la forma de enviar texto "unicode" con los componentes susomentados, aunque, estoy tan entusiasmado con ellos, que, incluso lo daría como una funcionalidad, simplemente, "no disponible" en la aplicación, supuesto que el resto del texto (ASCII) podría ser enviado y recibido sin problemas. Otra cosa sería el envío de archivos, una funcionalidad que se me hace duro dejar como "no disponible", supuesto que he hecho algunas pruebas y no he dado pie con bola.
Y eso es todo. Espero no haberte aburrido demasiado si has llegado hasta aquí. Seguramente tú sepas decirme algo sobre la "historia" que puede haber detrás de "TServerSocket" y "TClientSocket", y hasta de la historia que puede haber delante... cualquier comentario será bienvenido.
¡Muchas gracias!