Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
3-3317
sergey32
2002-08-13 17:29
2002.09.02
как в хранимую процедуру передать параметр


4-3677
Max2000
2002-06-28 13:55
2002.09.02
Мастера!!! Подскажите как это сделать на API? Без TCanvas?


1-3497
denimas
2002-08-21 09:55
2002.09.02
Реестр


4-3675
msts
2002-07-01 07:20
2002.09.02
Псевдо MDI или как скрестить слона с мухой


1-3434
kserg@ukr.net
2002-08-21 15:33
2002.09.02
помогите




   Наверх