FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
enviar string cliente-servidor
Hola a todos!!
Estoy desarrollando un programa estilo cliente servidor que se conecta mediando tcp/ip y envia strings desde el cliente al servidor, y este ultimo lo guarda en un archivo. La conexion ya la implemente y funciona bien, pero en un comienzo, para probar los datos que recibia el servidor, cree en el cliente 3 text-edit, los cuales tambien estaban en el servidor y recibian un string en el text-edit1, un numero entero y un numero flotante en los 2 text-edit siguientes. El problema se origina cuando quiero enviar 3 string, ya que los sigue reconociendo como 1 string, 1 int y 1 float. He revisado bastantes veces el programa, tanto cliente como servidor, pero no puedo encontrar el error. Envio el codigo del cliente y del servidor, los cuales son pequeños. Espero me puedan ayudar Muchas Gracias Saludos.. Código:
CLIENTE----> //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; struct DATOS_COM // crea una estructura llamada dato_personales { // que esta conformada por: char razon_social[20]; // un puntero a char (permite iniciar cadenas) char giro[20]; char rut[20]; char fono[20]; char direccion[20]; char ciudad[20]; char comuna[20]; char factura_n[20]; char cantidad[20]; char detalle[20]; char precio_unitario[20]; char precio_venta[20]; //int edad; // un entero //float altura; // un numero de punto flotante }; typedef struct DATOS_COM DATOS_COM; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ClientSocket1->Host = String( Edit1->Text ); ClientSocket1->Port = StrToInt( Edit2->Text ); ClientSocket1->Active = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { Label1->Caption = "Conectado"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { String buffer; DATOS_COM datos_enviados; buffer = Edit3->Text; strcpy(datos_enviados.razon_social,buffer.c_str()); buffer = Edit4->Text; strcpy(datos_enviados.giro,buffer.c_str()); buffer = Edit5->Text; strcpy(datos_enviados.rut,buffer.c_str()); Form1->ClientSocket1->Socket->SendBuf(&datos_enviados); Código:
SERVIDOR -------> //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "ServForm.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int cont=0; struct DATOS_COM // crea una estructura llamada dato_personales { // que esta conformada por: char razon_social[20]; // un puntero a char (permite iniciar cadenas) char giro[20]; char rut[20]; char fono[20]; char direccion[20]; char ciudad[20]; char comuna[20]; char factura_n[20]; char cantidad[20]; char detalle[20]; char precio_unitario[20]; char precio_venta[20]; //int edad; // un entero //float altura; // un numero de punto flotante }; typedef struct DATOS_COM DATOS_COM; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (Button1->Tag == 0) { Form1->ServerSocket1->Port = StrToInt( Label2->Caption ); Form1->ServerSocket1->Active = true; Button1->Caption = "Desconectar"; Button1->Tag = 1; } else { Form1->ServerSocket1->Active = false; Label1->Caption = "Host"; Button1->Caption = "Conectar"; Button1->Tag = 0; } } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1Listen(TObject *Sender, TCustomWinSocket *Socket) { Label1->Caption = Socket->LocalHost; } //---------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { DATOS_COM *datos_recibidos; datos_recibidos = (DATOS_COM *)malloc(28); Socket->ReceiveBuf(datos_recibidos,28); Edit1->Text = String(datos_recibidos->razon_social); Edit2->Text = String(datos_recibidos->giro); Edit3->Text = String(datos_recibidos->rut); Socket->SendText("Recibido!"); ---------------------------------------------------------------------- Última edición por dec fecha: 25-11-2006 a las 09:57:13. |
#2
|
||||
|
||||
No veo donde estan el entero y el flotante, todo lo que veo son string.
__________________
[Crandel] |
#3
|
|||
|
|||
ya se!!
Estuve probando toda la tarde y era un problema con la memoria que reservaba en el malloc, era demasiado poca para mas de un string, por eso generaba numeros raros en los otros text edit.
Gracias Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Enviar cadena de caracteres de cliente a servidor (Sockets) | david duarte | Providers | 5 | 20-08-2007 20:28:56 |
Enviar mails a mas de un cliente | zugazua2001 | Varios | 3 | 08-08-2006 00:58:06 |
BD en Cliente-servidor | Phacko | Conexión con bases de datos | 0 | 18-08-2004 00:03:41 |
Cliente - Servidor | Sotrono | Internet | 5 | 16-04-2004 05:50:35 |
cliente servidor | Humberto Pertuz | Conexión con bases de datos | 3 | 23-11-2003 17:34:49 |
|