cocke |
25-11-2006 05:17:44 |
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!");
----------------------------------------------------------------------
|