Страница 1 из 1

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

Добавлено: 22 ноя 2006, 21:36
MaxmaD
Смысл в том, что бы создать прогу, которая бы ловила сообщения от другого компьютера в сети.
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

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

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

А так я все на ClientSocket и ServerSocket делаю, если интересно, могу по подробнее :)

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

Добавлено: 30 ноя 2006, 13:51
Лелик_1044
В demos есть пример как это сделать

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

Добавлено: 02 дек 2006, 16:33
MaxmaD
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;