Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2006
cocke cocke is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 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
  #2  
Antiguo 25-11-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
No veo donde estan el entero y el flotante, todo lo que veo son string.
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 26-11-2006
cocke cocke is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 0
cocke Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 21:46:47.


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
Copyright 1996-2007 Club Delphi