Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿como hacer un chat ?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿como hacer un chat ? Responder citando

te posteo el codigo del mio (practicamente copiado del libro developer´s guide)
pero si te lias, mandame tu direccion y te lo mando por correo.
Hay un cliente y un servido:

CLiente:
--------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#define MARCA_COMANDO '!'
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ConnectButtonClick(TObject *Sender)
{
MySocket->Address =ServerEdit->Text;
MySocket->Port =PortEdit->Text.ToIntDef(1971);
MySocket->Active =true;
ConnectButton->Enabled =false;
DisconnectButton->Enabled =true;
MemoOut->Enabled =true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::DisconnectButtonClick(TObject *Sender)
{
MySocket->Active =false;
ConnectButton->Enabled =true;
DisconnectButton->Enabled =false;
MemoOut->Enabled =false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MySocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
MemoIn->SetFocus();
MemoIn->Lines->Add("Connected ...");
MemoOut->SetFocus();
MySocket->Socket->SendText(Format("UserName=%s ",
OPENARRAY(TVarRec,
(UserNameEdit->Text))));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MemoOutKeyPress(TObject *Sender, char &Key)
{
if(Key ==VK_RETURN)
{
MySocket->Socket->SendText(MemoOut->Text);
MemoOut->Lines->Clear();
Key =0;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MySocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString s =Socket->ReceiveText();
if(s[s.Length()]!='!')
{
MemoIn->SetFocus();
//MemoIn->Lines->Add(Socket->ReceiveText());
MemoIn->Lines->Add(s);
MemoOut->SetFocus();
}
else
{
Label1->Caption=Socket->ReceiveText();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MemoOutDragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
// MySocket->Socket->SendText("intento de enviar fichero..\n");
// MySocket->Socket->SendStream(((TFileStream *)Source));
// MySocket->Socket->SendText("fin de intento de enviar fichero..\n");
// MemoOut->Lines->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MemoOutDragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
ShortString s = Source->ClassName();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
ShortString s = Source->ClassName();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
ShortString s = Source->ClassName();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Nuevo_Manejador(TMessage &m)
{
if(m.Msg==WM_DROPFILES)
{
//devuelve el nº de ficheros
int n_ficheros = DragQueryFile((HDROP)m.WParam,//HDROP hDrop: handle to structure for dropped files
0xffffffff, //UINT iFile: index of file to query
(LPSTR)NULL, //LPTSTR lpszFile: buffer for returned filename
NULL); //UINT: cch
if(n_ficheros !=1)
{
ShowMessage("solo funciono con un fichero");
m.Result=0;
return;
}

//devuelve la longitud del nombre
int nombre_long = 1+DragQueryFile((HDROP)m.WParam,
0,
NULL,
NULL);
//obtener el nombre
char *nombre= new char[nombre_long];
DragQueryFile((HDROP)m.WParam,
0,
nombre,
nombre_long);
//carga el fichero

//
//
ButtonSendFichero->Enabled=true;
TFileStream *s=new TFileStream(nombre,fmOpenRead);
MySocket->Socket->SendStream(s);
//MySocket->Socket->SendBuf(nombre+MARCA_COMANDO);
MemoOut->Lines->LoadFromFile(nombre);
MySocket->Socket->SendText(MemoOut->Text);
MemoOut->Lines->Clear();
delete [] nombre;

//finaliza
DragFinish((HDROP)m.WParam);
m.Result = 0;
return;
}
Viejo_Manejador(m);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DragAcceptFiles(MemoOut->Handle,true);
Viejo_Manejador= MemoOut->WindowProc;
MemoOut->WindowProc=Nuevo_Manejador;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ButtonLimpiarClick(TObject *Sender)
{
MemoIn->Lines->Clear();
}
//---------------------------------------------------------------------------

/*
**poner
**
**
**
**
*/


void __fastcall TForm1::ButtonSendFicheroClick(TObject *Sender)
{

}
//---------------------------------------------------------------------------


SErvidor
--------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "server.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ConnectedList = new TStringList();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartButtonClick(TObject *Sender)
{
MyServer->Port =PortEdit->Text.ToIntDef(1971);
Caption =MyServer->Port;
MyServer->Active =true;
StopButton->Enabled =true;
StartButton->Enabled =false;
PortEdit->Enabled =false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StopButtonClick(TObject *Sender)
{
MyServer->Active =false;
StartButton->Enabled =true;
StopButton->Enabled =false;
PortEdit->Enabled =true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyServerClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
LogMemo->Lines->Add(Socket->RemoteAddress +" has connected..");
ConnectedList->AddObject(Socket->RemoteAddress,Socket);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyServerClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
LogMemo->Lines->Add(Socket->RemoteAddress +" has disconnected..");
SendMessage(Format("%s has disconnected.",
OPENARRAY(TVarRec,
(ConnectedList->Strings [ConnectedList->IndexOfObject(Socket)]))),
"Server ");
ConnectedList->Delete(ConnectedList->IndexOfObject(Socket));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SendMessage(AnsiString aMessage,AnsiString aFrom)
{
for(int i=0;i<MyServer->Socket->ActiveConnections;i++)
{
if(aFrom =="Server ")
MyServer->Socket->Connections [i ]->
SendText(Format("%s ",OPENARRAY(TVarRec,(aMessage))));
else
MyServer->Socket->Connections [i ]->
SendText(Format("%s said:%s ",OPENARRAY(TVarRec,(aFrom,aMessage))));
}
}

void __fastcall TForm1::MyServerClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString TextIn,CurrentName;
int iIndex;
TextIn =Socket->ReceiveText();
iIndex =ConnectedList->IndexOfObject(Socket);
if(iIndex ==-1)
return;
TStringList *UserName =new TStringList();
if(TextIn.Pos("UserName=")==1)
{
//Set User Name
UserName->Text =TextIn;
ConnectedList->Strings [iIndex ] ==UserName->Values ["UserName "];
SendMessage(Format("%s has connected.",
OPENARRAY(TVarRec,
(UserName->Values ["UserName "]))),"Server ");
}
else
{
//Send Message
CurrentName =ConnectedList->Strings [iIndex ];
SendMessage(TextIn,CurrentName);
}
delete UserName;
}
//---------------------------------------------------------------------------

Volver arriba
Mensaje    Asunto: ¿como hacer un chat ? Responder citando

hola a todos

Necesito saber como hacer un programa en builder c++ 4.0 que me comunique dos computaderes que esta en red (para una mejor idea como un chat).

por favor si sabe envienme el codigo fuente del programa.

gracias de antemano.

Att:Aldamis Meléndez P

Volver arriba
Mensaje    Asunto: ¿como hacer un chat ? Responder citando

Hola Yoz yo también quiero el código será posible que me lo mandes a mí también...

joseluisbz@bigfoot.com

Volver arriba
Mensaje    Asunto: ¿como hacer un chat ? Responder citando

Si me lo enviaras a mi tambien te lo agradecería.

risu@artico.lma.fi.upm.es

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.