Как создать примитивный клиент-сервер с односторонней связь

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

Смысл в том, что бы создать прогу, которая бы ловила сообщения от другого компьютера в сети.
1. 2 компьютера подключены в интернете
2. I.P. адреса этих компьютеров известны (в сервер я вмонтировал программный код который определят IP адрес. Через ICQ/MailRuAgent/по почте в конце концов будет передан IP адрес клиенту. Т.е. человек запустивший сервер перешлёт свой IP адрес человеку, подключённому к интернету и запустившему программу клиент)
3. Клиент отправлят сообщение серверу (сервер у себя ловит и обрабатывает сообщение) зная его IP адрес, и будучи уверенным что программа сервер подключена (так оно на самом деле и есть).
4. Сервер ловит сообщение и делает что ему надо (делает ход в крестиках-ноликах...).

Моя задумка заключается в том, что я хочу сделать сборник игр в которые можно играть чисто по интернету (крестики нолики, морской бой, шашки, дурак...). Спрашиваю я только как создать это в раннем этапе, потом же в одной программе можно соединить как клиент так и сервер.

Заранее благодарен за ответ.
P.S. Если можно, то пришлите исходник 2 программ (клиент, сервер) на maxmad86@mail.ru.
P.P.S. Delphi 7 либо Delphi 5
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

блин, хреновая идея с этим крутить через и-нет, ведь можешь открыть такую дыру :)

А так я все на ClientSocket и ServerSocket делаю, если интересно, могу по подробнее :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

В demos есть пример как это сделать
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

Dr Grizzly, скажи, пожалйста, а ты это делаешь в Delphi7 или в Delphi5?
Я вот продвинулся немного по этому вопросу в Delphi5, но моё продвижение только состоит в том, что это работает только в локальной сети. И то доконца я не уверен, что оно работает.

Сначала я попробовал всё сделать как было написано в данной статье:
http://msk.nestor.minsk.by/kg/2004/10/kg41002.html

Создать программу, клиент-сервер получилось только в Delphi5. В 7 нету некоторых компонентов, описанных в статье.
Когда я подсоединяюсь в и-нет, IP естественно у меня меняется. Так вот когда я запускаю клиент и сервер, и набираю новый IP адресс для соединению у меня на компьютере подключенном к сети, то программа уже не работает. (127.0.0.1. Этот работает когда я отключён от и-нета).

Определение IP адресса компьютера, подключённого к и-нету, происходит по следующей функции (во всяком случае я его так определяю):

uses
WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Ответить