Ver Mensaje Individual
  #1  
Antiguo 25-11-2006
cocke cocke is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Reputación: 0
cocke Va por buen camino
Unhappy 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.
Responder Con Cita