Форум: "Сети";
Текущий архив: 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