bcb chat

Programovacie jazyky, rady, poradňa...
jozi341
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 29 dec 2007, 16:02

bcb chat

Príspevok od používateľa jozi341 »

Skusal som urobit v Borlande C++ Builderi Chat cez Sockety (Client Socket a Server Socket)... poslal som ho kamocovy skusali sme sa spojit on dal vytvorit poslal mi svoju IP dal som ju do Edit1 a dal som pripojit Sa ale nenaslo mi ho... skusali sme to aj naopak ale nic !!! :aasmile5: :smt040

tu je obrazok programu....
http://i26.tinypic.com/2a9e1w5.jpg

tu su kody:

Kód: Vybrať všetko

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int x;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Enabled = false;
ServerSocket1->Port = 4000;
ServerSocket1->Active = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
if( Edit1->Modified )
{
Edit1->Enabled = false;
ClientSocket1->Port = 3500;
ClientSocket1->Host = Edit1->Text;
ClientSocket1->Active = true;
}
else
{
Application->MessageBox("Musite Zadat IP !", NULL, MB_OK |MB_ICONWARNING);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
String data;

data = ServerSocket1->Socket->ReceiveText();
Memo1->Lines->Add("Klient: " + data);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
String data;

data = ClientSocket1->Socket->ReceiveText();
Memo1->Lines->Add("Server: " + data);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connecting(TObject *Sender,
      TCustomWinSocket *Socket)
{

StatusBar1->SimpleText="Pripajam Sa Na: " + Edit1->Text + "...";

Button4->Enabled = false;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{

Button4->Enabled = true;

if(ErrorEvent)
{

StatusBar1->SimpleText="Server: " + Edit1->Text + " Sa Nenasiel !";
int f = Application->MessageBox("Server Sa Nenasiel ! Chcete to skusit este raz?", NULL, MB_YESNO|MB_ICONWARNING);
                                
if(f == IDYES)
{

Edit1->Enabled = false;

  if( Edit1->Modified )
  {
     ClientSocket1->Port = 3500;
     ClientSocket1->Host = Edit1->Text;
     ClientSocket1->Active = true;
  }
 else
 {
Application->MessageBox("Musite Zadat IP !", NULL, MB_OK |MB_ICONWARNING);

 }
 }
 }
 Button4->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit1->Enabled = true;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
      TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Pripojenie bolo akceprovane pre: " + Edit1->Text ;
Edit1->Enabled = false;
Button4->Enabled = false;
Button5->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
ServerSocket1->Active = false ;
StatusBar1->SimpleText = "Odpojene";
Button4->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
ServerSocket1->Active = false ;
StatusBar1->SimpleText = "Odpojene";
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
StatusBar1->SimpleText = "Server Je Spojeny s Klientom: " + Socket->RemoteAddress + " " + Socket->RemoteHost;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (ServerSocket1->Active == true)
ServerSocket1->Socket->SendText(Memo1->Text);

if (ClientSocket1->Active == true);
ClientSocket1->Socket->SendText(Memo1->Text);
}
//---------------------------------------------------------------------------
Za Pomoc Dakujem :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

a má tvoj kamoš verejnú ip?
jozi341
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 29 dec 2007, 16:02

Príspevok od používateľa jozi341 »

pravdepodobne ano... to vadi?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

áno, vadí. Ak nemá, tak smola. A pravdepodobne ti nepomôže, musí ju mať naisto :)
jozi341
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 29 dec 2007, 16:02

Príspevok od používateľa jozi341 »

a neda sa to urobit aby mi ho spojilo aj ked nema verejnu?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skúšali ste to cez net, alebo na lan? Ak ste na sieti, tak môže byť problém vo fw
jozi341
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 29 dec 2007, 16:02

Príspevok od používateľa jozi341 »

neviem... sak normalne len som mu poslal on spustil a skusali sme to.... a ukazalo ma firewall ze je tam hrozba ale dal som odblokovat..

//autoeditácia príspevku ( 27 Jul 2009, 19:05 )
... A neda sa to naprogramovat tak, aby sa dal Klient so Serverom spojit aj na Verejnej, aj na Zdielanej IP ? :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Pripojiť sa môžeš len na verejnú IP (a teda aspoň jeden musí verejnú IP adresu mať).
Napísať odpoveď