Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-34884
prorok2
2003-05-30 19:49
2003.06.12
Как сделать


3-34705
Desperado
2003-05-23 10:16
2003.06.12
Знатокам InterBase вопросик


3-34728
Valera
2003-05-23 15:48
2003.06.12
Database Desctop


14-35006
Bug
2003-05-26 12:14
2003.06.12
Создание ехе файла


3-34735
softmaster
2003-05-23 12:09
2003.06.12
POST and IBX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский