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

Вниз

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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
14-3626
Ренат
2002-08-07 17:18
2002.09.02
Холод


1-3353
Ahmad
2002-08-19 13:03
2002.09.02
Файлы в DLL, миф или реальность?


4-3661
v0id
2002-07-01 08:57
2002.09.02
Как компилить из своей программы?


3-3257
Ruslan_55
2002-08-09 20:04
2002.09.02
Вопрос по хранимым процедурам


14-3576
s-gorbachev
2002-08-05 16:55
2002.09.02
Помогите купить сервер(железку) для IB6 на 50 юзеров





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский