Текущий архив: 2003.07.21;
Скачать: CL | DM;
Вниз
Чат без сервера Найти похожие ветки
← →
Chamel (2003-07-01 15:35) [0]Киньте сюда, плз, ссылочку на пример чата без сервера.
Или объясните, как это работает.
← →
Palladin © (2003-07-01 15:42) [1]это не работает
← →
Ru © (2003-07-01 15:49) [2]кинуть на форму ClientSocket1 и ServerSocket1, два эдита, два бутона и один лист бокс.
Ввести глобальную переменную:
var
isOK:boolean=false;
Далее прописать процедуры:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Address:=Edit1.Text;
ClientSocket1.Active:=true;
Edit2.SetFocus;
Edit1.ReadOnly:=true;
Button2.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Active:=true;
Caption:="Wait ...";
Edit1.ReadOnly:=true;
Button1.Enabled:=false;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Caption:="Connect ...";
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Caption:="DisConnect ...";
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Caption:="Connect ...";
isOK:=true;
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Caption:="DisConnect ...";
isOK:=false;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ListBox1.Items.Add(Socket.ReceiveText);
end;
у клиента ОнРид то же что и у сервера.
Содрано из книжки для учеников 8-9 класса :)
Работает просто
1. на одной машине запускаем программу как сервер
2. на второй как клиент
3. два человека обмениваются, если не добавлять кода.
← →
Palladin © (2003-07-01 15:55) [3]
> Ru © (01.07.03 15:49)
ему не надо сервера
← →
Anatoly Podgoretsky © (2003-07-01 16:00) [4]Palladin © (01.07.03 15:55)
Ты не понял, ему не надо выделенного сервера, а не компоненты.
Chamel (01.07.03 15:35)
В примерах есть чат, именно без сервера.
← →
Vlad Oshin © (2003-07-01 16:19) [5]сервер должен быть, но быть плавающим
как это реализовать - надо думать
DigitMan сказал, и я согласен - щирокое вещание отклоняется
Тогда на сервере должен быть список законекченых клиентов, который будет раздаваться каждому новому клиенту.
В случае выхода сервера - сервером становиться первый клиент в списке. Например так...
← →
Anatoly Podgoretsky © (2003-07-01 16:36) [6]Vlad Oshin © (01.07.03 16:19)
Почему "щирокое вещание отклоняется", запрета на это не объявлено
И даже ограничений на протоколы нет.
← →
Palladin © (2003-07-01 16:53) [7]
> В случае выхода сервера - сервером становиться первый клиент
> в списке. Например так...
в таком случае как новый клиент узнает куда ему подключатся?
← →
Vlad Oshin © (2003-07-01 17:15) [8]
> Anatoly Podgoretsky © (01.07.03 16:36)
> Palladin © (01.07.03 16:53)
да, совершенно верно - бродкаст, иначе никак
← →
Vvedensk © (2003-07-02 13:55) [9]Привет всем!!
Почему нельзя ???
1) Можно каждых 30 сек отсылать сообщение широковещательным пакетом с ключевым символом например UDP.Send(‘@’+Client_Name) где @ ключевой символ, а Client_name имя пользователя.
2) Другие компы получают этот пакет и видят в нем @ смотрят что там дальше и добавляют в список(предварительно просмотрев нет ли там уже этого имени ( а то в список будет добавляется одно и тоже имя каждых 30 сек :))
3) Если чат только вошел в сеть то ему надо получить список клиентов тогда посылаем ключевой символ например ‘#’ и ждем… (при получении этого символа все чаты отсылают данные о себе см пункт 1.)
Чтоб не было большой нагрузки на сеть я ставил синхронизацию (то есть символ # отправляет только один чат например: когда приходит # то другие чаты уже символ запроса не отправляют)
Да и ещё лучше использовать протокол UDP, а не IPX
← →
Sha © (2003-07-02 15:53) [10]>Vlad Oshin © (01.07.03 17:15)
>> Anatoly Podgoretsky © (01.07.03 16:36)
>>Palladin © (01.07.03 16:53)
>да, совершенно верно - бродкаст, иначе никак
иначе мультикаст, а это чуть лучше :)
← →
Chamel (2003-07-04 00:03) [11]
> В примерах есть чат, именно без сервера.
Не нашел ;( Может плохо искал? Если что версия Delphi - 7.
А ссылочек на примеры никто не знает часом?
P.S. Вроде еще можно через MailSlot"ы какие-то... В хелпе про них написано мало, не понял ничего. Может, объяснит кто?
← →
Vlad Oshin © (2003-07-04 00:07) [12]
> Да и ещё лучше использовать протокол UDP, а не IPX
выгонял юзеров с сервера?
← →
Chamel (2003-07-04 02:54) [13]
> Anatoly Podgoretsky © (01.07.03 16:36)
> Vlad Oshin © (01.07.03 16:19)
> Почему "щирокое вещание отклоняется", запрета на это не
> объявлено
> И даже ограничений на протоколы нет.
А можно поподробнее немного? Что за бродкаст и мультикаст? Интересуют принципы действия.
← →
Chamel (2003-07-04 17:53) [14]> Anatoly Podgoretsky © (01.07.03 16:36)
> Vlad Oshin © (01.07.03 16:19)
> Почему "щирокое вещание отклоняется", запрета на это не
> объявлено
> И даже ограничений на протоколы нет.
А можно поподробнее немного? Что за бродкаст и мультикаст? Интересуют принципы действия.
← →
MalkoLinge © (2003-07-04 19:05) [15]А мне киньте сервер без чата....
← →
Sha © (2003-07-04 23:36) [16]>Chamel (04.07.03 17:53)
>А можно поподробнее немного? Что за бродкаст и мультикаст? Интересуют принципы действия.
MSDN
← →
Chamel (2003-07-05 00:34) [17]
> Sha © (04.07.03 23:36)
> MSDN
В MSDN ничего толком не написано ;((((
← →
Sha © (2003-07-05 11:04) [18]Так уж и ничего?
Поищи для начала топики: SO_REUSEADDR, IP_ADD_MEMBERSHIP, IP_MULTICAST_TTL, IP_MULTICAST_LOOP
Страницы: 1 вся ветка
Текущий архив: 2003.07.21;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.015 c