Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

Написание локального чата...   Найти похожие ветки 

 
Freeze ©   (2003-04-04 12:06) [0]

Подскажите пожалуйсто, как работают все чаты, которые работают без сервера. Ну вот например: запускаешь чат, а тебе уже сразу показываются ники кто сидит в этом чате. Помогите плизззз


 
savva ©   (2003-04-04 12:42) [1]

где ты такие видел?


 
Clickmaker ©   (2003-04-04 14:15) [2]

Если ты имеешь в виду локально-сетевые трещалки типа LanTalk, то они как правило работают через виндозные mailslot"ы по протоколу UDP (без гарантии доставки). Там нет понятий клиент и сервер, все равны


 
AllDontFire ©   (2003-04-04 16:56) [3]

Например, На компоненте TUDP:
При запуске чата (в Onshow) посылаешь Broadcast-сообщение (Всем сразу)
begin ...
Udp1.Activate;
Udp1.Options.Broadcast:=True;
Udp1.RemoteHost:="255.255.255.255";
...
end;


TForm1.UDP1Ready(Sender: TObject);
begin
Udp1.SendText("V"+Edit_Name.Text) // "V"- вход (можно любую букву)
end;


Если в чате уже кто-то сидит, он получит это сообщение:
procedure TForm1.UDP1DataReceived(Sender:TComponent;const Data:String;FromIP:String;Port:Integer);
begin
...
Udp1.RemoteHost:=FromIP;//кому слать
If M[1]="V"Then Begin
ListBox1.Add(FromIP);//добавил тебя в список
Udp1.sendText("ok"+Edit_Name.Text);//ответ на "V"
end;
...
end;


Теперь ты получаешь его "ок" и добавляешь в свой список.

Вообще-то, лучше не просто добавлять в список,
а создавать программно CheckBox"ы:
Procedure TForm1.CreateCb(i:Byte;Caption:String);
Var T:TCheckBox;
begin
t:=TCheckBox.Create(Form1);t.Name:="Cb"+IntToStr(Ord(AIP[i]));
t.Height:=17;t.Width:=130;t.Top:=19+20*i;t.Left:=40;
t.Parent:=Panel2;t.Caption:=Caption;t.Enabled:=False
end;


а потом работать через TComponent:
CompR:=FindComponent("Cb"+ip);
TcheckBox(CompR).Enabled:=...



 
AllDontFire ©   (2003-04-04 17:01) [4]

Извини, забыл в UDP1DataReceived

M:=Data


 
AlexMax ©   (2003-04-04 18:21) [5]

Всё просто. Если тебе необходим именно локальный чат, то проще всего создать MailSlot. Смотри функции по MailSlot"ам. Например CreateMailSlot. А список пользователей получай функцией WNetEnumResource. Это самый простой способ написать локальный чат без использования компонент UDP, TCP и Client/Server Socket. А так в стандартных дельфовских демках-примера есть пара чатов написанных на вышеприведённых компонентах.


 
Дефлоратор   (2003-04-09 16:55) [6]

я тоже когда-то страдал с сокетами, а потом мы запарились ждать, пока включат комп с сервером и переделал на УДП
УДП - улез для локальных чатов, жаль только не для всех локалок подходит, но для большинства катит.
Получилось неплохо, если хотите, посмотрите на
http://slim2.pisem.net/chat.zip



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

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-35044
cult
2003-05-27 17:30
2003.06.12
Как узнать букву, под которой в системе CDROM?


7-35090
Seb_Kost
2003-04-08 14:54
2003.06.12
Печать на принтер через канву


3-34727
kdy
2003-05-20 11:56
2003.06.12
При переходе с D3 на D6 перестал работать PREPARE


1-34853
Апатин Даниил
2003-05-29 22:47
2003.06.12
Оформление Edit a


7-35081
Dimaz-z
2003-04-07 22:32
2003.06.12
Помогите! Как позвонить?...