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

Вниз

пресловутое окно активных игр   Найти похожие ветки 

 
dimmu2   (2002-06-12 11:53) [0]

Добрый день, Мастера! Я был бы очень признателен, если бы Вы объяснили мне одну интересную вещь.
Наверняка, все кто играл в компьютеные игры видел как организуется создание и подключение к играм по сети с несколькими игроками (т.н. «Мультиплеер») :)
Так вот, происходит это следующим образом: один создает игру, а остальные ждут перед окном со списком активных игр и нажимают «Refresh» и как только игра создана в этом окошечке появляется ее название, все туда кликают и происходит соединение.
Я пишу прикладную программу, что-то вроде чата. Пересыла данных организуется по протоколу TCP (т.е. из компонентов – TServerSocket и TClientSocket), клиент вводит IP, присоединяется и все ok. Сначала мне казалось, что вводить IP удобно (у меня W2K и там при соединении пишут твой IP), а потом выяснилось, что в W98 ничего такого нет и подсоединиться, не зная IP, бедняга не сможет.
Да, я знаю, что есть куча суррогатных способов решить эту проблему, не модернизируя программу, но все это выглядит не элегантно.
Я искренне надеюсь, что кто сможет обьяснить хотя бы алгоритм, а там чего будет непонятно – я спрошу :)


 
cypher ©   (2002-06-12 14:32) [1]

Ну дык эта.... используй UPD бродкаст, каждые ЭНдацть секунд посылай типа "Хеллоу! Я Сервер! Мой IP такой-то!!!", потом все кто ЮДП прослушивают отправляют ну например какой-то ключик, типа "А чем докажешь?!" =).... а он уже персонально каждому отвечает "Мамой клянусь!" =)))))

ну... =)))... я надеюсь идея ясна


 
dimmu2   (2002-06-13 18:04) [2]

интересно ... а какой компонент? TUdpSocket? Или нет? И как делается броадкаст?
Я извиняюсь за невежество, но я ничего кроме TServer/ClientSocket не использовал раньше ... так что пожалуйста по-подробнее!


 
cypher ©   (2002-06-13 23:53) [3]

Ну в дельфях 6 вроде отказались от НетМастеровских NMUPD, а 6 дельфей у меня нет, что именно не скажу, но судя по названию - оно.
бродкаст это посылка пакета сразу всем, адрес 255.255.255.255 (хотя, некоторые UDP не дают посылать по такому адресу =\, поэтому используй маску сети в качестве адреса, т.е. последняя цифра - 255, например 192.168.1.255)


 
Malder ©   (2002-06-15 00:10) [4]

, адрес 255.255.255.255 (хотя, некоторые UDP не дают посылать по такому адресу =\, поэтому используй маску сети в качестве адреса, т.е. последняя цифра - 255, например 192.168.1.255)
что за ахинея...


 
Malder ©   (2002-06-15 00:18) [5]

В смысле, что маска сети - это вовсе не адрес сети класса C с последним октетом 255...


 
dimmu2   (2002-06-18 16:47) [6]

спасиба за информацию только я тут пробую и что-то не получается ...

на стороне сервера, который рассылает позывные:

//соединение
UdpSocket1.RemoteHost:="255.255.255.255";
UdpSocket1.RemotePort:="1981"; //произвольное значение?
UdpSocket1.Connect;
//рассылка
BMessage:=ServerSock.Socket.LocalAddress;
DataLen:=Length(BMessage);
Data:=PChar(BMessage);
UdpSocket1.SendBuf(Data,DataLen,0);


на стороне клиента, который принимает позывные:

//открываем сокет
UdpSocket2.Open;
//рассылка
принимаем сообщение по событию OnReceive


и это пол беды - я смотрел что за адрес рассылается - после открытия ServerSock значение ServerSock.Socket.LocalAddress почему-то "0.0.0.0" ...


 
Ghost. ©   (2002-06-19 09:58) [7]

А че за компонент ты взял?


 
GM_   (2002-06-19 10:34) [8]

Только обычно делают наоборот, не "Хеллоу! Я Сервер! Мой IP такой-то!!!", а "Хеллоу! Я Клиент! Есть кто сервер???" и без всяких "каждые ЭНдацть секунд"


 
dimmu2   (2002-06-21 17:54) [9]

я использовал TUdpSocket из палитры "Internet" а что?


 
dimmu2   (2002-06-24 14:40) [10]

ау?



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
1-3430
GIL
2002-08-22 05:26
2002.09.02
Только для умных!!!


3-3270
B
2002-08-06 12:52
2002.09.02
Выбор движка


1-3329
кондратий
2002-08-21 17:14
2002.09.02
как узнать открыт ли файл ...


8-3524
AlexRaza
2002-04-13 00:04
2002.09.02
Звуковая карта


14-3568
lak_b
2002-08-06 00:41
2002.09.02
Duke Nukem