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