Delphi Chat

Programovacie jazyky, rady, poradňa...
SC0U7
Amateur
Amateur
Príspevky: 32
Registrovaný: 06 júl 2009, 8:01
Kontaktovať používateľa:

Delphi Chat

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

Ako by sa dal vytvorit chat ale nie cez siet ale Internetom cize kamarat by si spustil clienta a by mi pisal a samozrejme ze by som mu mohol odpisovat ja server THX ale to sa asi nebude dat.. :shock:
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 internet nie je sieť?
SC0U7
Amateur
Amateur
Príspevky: 32
Registrovaný: 06 júl 2009, 8:01
Kontaktovať používateľa:

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

asi ee lebo siet je medzi dvomi PC (Lan) ale ked to chcem cez Net ako naprd icq samozrejme len male icq velmi.. :)
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 »

ale hej, je to sieť :) A z toho programátorského hľadiska je to úplne jedno (tzn. chat ktorý pôjde cez net môže ísť aj cez lan, a naopak). Jedinou podmienkou je aby mal jeden z dvojice (alebo ak spravíš server osobitne tak server) verejnú ip. Kedysi dávno som taký chat robil, možno ho ešte nájdem. Ak nie, môžem ti spraviť jednoduchú ukážku ako na to
SC0U7
Amateur
Amateur
Príspevky: 32
Registrovaný: 06 júl 2009, 8:01
Kontaktovať používateľa:

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

a bez verejnej ip by to neslo? no skús sem dať ukážku 8)
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 »

robil som to dávno, až sa za to hanbím teraz :)

kľúčové procedúry:

Kód: Vybrať všetko

procedure TForm1.pripoji1Click(Sender: TObject);
begin
if form2.showmodal=mrOk then begin
  online_list:=TStringlist.Create;
  ClientSocket1.Address:=form2.ip;
  ClientSocket1.Port:=5050;
  nick:=form2.Edit2.Text;
  if nick='' then nick:='anonym';
  ClientSocket1.Open;
  edit3.SetFocus;
  end;
end;

procedure TForm1.odpoji1Click(Sender: TObject);
begin
  ListBox2.Clear;
  GroupBox1.caption:='Online (0)';
  ClientSocket1.Socket.SendText(_odhl+nick);
  ClientSocket1.Close;
  online_list.Destroy;
end;
a posielanie správ na server robíš cez

Kód: Vybrať všetko

ClientSocket1.Socket.SendText(sprava);
server to následné rozpošle na každého klienta:

Kód: Vybrať všetko

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var i:integer;
    sprava:string;
begin
sprava:=Socket.ReceiveText;
online_list.Sort;
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do begin
  ServerSocket1.Socket.Connections[i].SendText(sprava);
  end;
end;
hotové exe ako ukážku máš v prílohe. Komplet zdroják ti nedám (ani ti netreba viac ako je tu, no ja som si robil vlastný protokol každý klient je aj serverom, a dynamicky sa mi prepájalo aby som nepotreboval mať jeden centrálny server a plno iných vecí, preto nechcem aby si to vydával pod svojim menom). Využíva sa iba

Kód: Vybrať všetko

ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Ak chceš skúšať online, beží na porte 5050. Na lan ti to fungovať bude tiež. Ani si ale už nepamätám či to malo nejaké bugy alebo nie..
Prílohy
client.rar
(342.53 KiB) 40 stiahnutí
Napísať odpoveď