Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
14-67999
X-trimal
2003-07-04 11:03
2003.07.21
The Best


1-67794
Vlad_R
2003-07-03 07:17
2003.07.21
Печать текстовой строки поверх графического фона


1-67763
Dimaxx
2003-07-09 00:07
2003.07.21
Папка профиля пользователя


4-68122
likeanangel
2003-05-20 17:08
2003.07.21
Импорт/экспорт в реестр


7-68093
Berzercer
2003-05-13 16:57
2003.07.21
УБРАТЬ иконку из ALT-TAB