Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   ¿Como enviar un Record mediante un Socket? (https://www.clubdelphi.com/foros/showthread.php?t=77406)

jednavlop 23-01-2012 01:50:52

¿Como enviar un Record mediante un Socket?
 
Hola, que tal, tengo algunas ligeras dudas, espero puedan ayudarme.

He estado usando los componentes TClientSocket y TServerSocket para comunicar dos aplicaciones y
me he encontrado con algunos problemas:
  1. Si envio por ejemplo los textos "Mensaje1" y "Mensaje2" el servidor termina recibiendo el texto "Mensaje1Mensaje2", ¿Como podria solucionar esto?
  2. ¿Como podria enviar una variable de tipo Record.
De antemano gracias.

juanlaplata 19-05-2012 15:22:28

En mi caso, en la utilizacion de socket y envio de "texto". por cada "palabra" las separaba por algun cartacter especial, y del lado del q recibe traducir esta situacion.
Ej.
Envio: Mensaje1|Mensaje2
Al recibir:
v_mensaje_completo := Mensaje1|Mensaje2 ;
v_M1 := copy(v_mensaje_completo, 1, pos('|', v_mensaje_completo)-1);
v_M2 := copy(v_mensaje_completo, pos('|', v_mensaje_completo)+1, lenght(v_mensaje_completo));

jednavlop 21-05-2012 04:02:31

Hola juanlaplata, gracias por responder.
He de decir que he utilizado esa técnica para mensajes simples.
Pero en mi caso me resulta un tanto laborioso utilizarla porque necesito enviar muchos números, algunos de ellos con decimales, esto implicaría reemplazar el separador de los decimales por el correspondiente en la otra computadora para convertir de String a Double.
Y así hay varios detalles que me hicieron buscar maneras más avanzadas de realizar esto, sin embargo aún no he encontrado otra forma de hacerlo :mad:

juanlaplata 21-05-2012 13:36:35

Ok, si no es solo envio de mensajes simples de texto, deberias pensar enviar archivos mediante el comando SendStream. Para base de datos, bien podria ser por ejemplo un script.sql armado de un lado y ejecutado del otro.

Suerte. saludos.

Faust 22-05-2012 15:50:28

Hace una semana estaba trabajando en conjunto una aplicación que yo hice en delphi con un TCPServer y una aplicación de un compañero en C++ desde linux, mi compañero me mandaba texto simple, yo recibía su conexión, pero no me mostraba el texto desde el evento OnExecute de mi server sino hasta que el cliente enviara un CR/LF, quizás sea el mismo caso con los sockets.

Enan0 27-05-2012 09:18:54

hola para solucionar el problema del los cr/lf podes usar la opcion (dependiendo del socket que utilices)

Writeln y readln los componentes de indy los traen.

creo que los componentes standar de delphi tambien


La franja horaria es GMT +2. Ahora son las 00:06:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi