Вниз
Скачать: CL | DM;

Чат для локалки   Найти похожие ветки 

← →
Sheng ©   (2004-04-18 18:28) [0]

Вот, решил разобраться с сетью и сделать чат. Сделал на TServerSocket и TClientSocket - два приложения сервер и клиент. Это всё нормально работает.
А вот сам вопрос - как сделать чат в виде одного приложения - без отдельного сервера и клиентов?


← →
Sheng ©   (2004-04-18 22:32) [1]

Вообще, есть у кого-нибудь идеи, как при загрузке определить, где загружены чаты, получить инфу о них, установить соединение, и т.д. как это сделано в чатах без выделенного сервера???


← →
Rouse_ ©   (2004-04-18 22:35) [2]

UDP - броадкаст...


← →
XAOC ©   (2004-04-18 22:56) [3]

у  меня  есть исходник  одного чата... если  надо то пиши на alex-electronik@list.ru скину...


← →
Sheng ©   (2004-04-19 10:04) [4]

> Rouse_

UDP - броадкаст...

А порты как определять? Или там не надо?... Я ж не знаю...


← →
Sheng ©   (2004-04-19 11:17) [5]

Народ, мож кто занимался так сетью - киньте какие-нибудь исходнички на мыло, на них проще разбираться.

> Rouse_
Теорию прочитал, кое-что понял, кое-что нет, но всё равно не допру как работать правильно с сетью.


← →
Rouse_ ©   (2004-04-20 11:32) [6]

На практике, кидай на форму IdUDPServer и IdUDPClient с закладки IndyServers и IndyClients, в uses добавь IdSocketHandle

Потом положи на форму кнопку, Edit и Memo
При нажатии на кнопку будем отправлять содержимое Edit
При приёме - отображать полученное в Memo

код получится примерно такой:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase,
 IdUDPServer, IdSocketHandle;

type
 TForm1 = class(TForm)
   IdUDPServer1: TIdUDPServer;
   IdUDPClient1: TIdUDPClient;
   Button1: TButton;
   Edit1: TEdit;
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
     ABinding: TIdSocketHandle);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 IdUDPServer1.DefaultPort := 25080;
 IdUDPServer1.Active := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 IdUDPClient1.Broadcast(Edit1.Text, 25080);
end;

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var
 Str: TStringStream;
begin
 Str := TStringStream.Create("");
 try
   Str.CopyFrom(AData, AData.Size);
   Str.Position := 0;
   Memo1.Lines.Add(Str.DataString);
 finally
   Str.Free;
 end;
end;

end.


← →
Anvar Turakulov   (2004-04-21 09:16) [7]

Удалено модератором
Примечание: Задай вопрос в своей ветке...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
14-1084720952
SergeyM
2004-05-16 19:22
2004.06.06
Как узнать Count на CD-ROM e


1-1085550629
Evgen
2004-05-26 09:50
2004.06.06
Поиск в запросе


4-1083263927
Dummy
2004-04-29 22:38
2004.06.06
Какой WM_* соответствует VLC овскому...


14-1085035375
Igorek
2004-05-20 10:42
2004.06.06
Посоветуйте прогу для разговора голосом по телефону через модем


6-1082492388
Blackgrin
2004-04-21 00:19
2004.06.06
Определение IP по домену




   Наверх