|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Indy примитивный клиент и сервер
Существует статья: http://www.glscene.ru/content.php?article.24 . Там описано создание клиента и сервера в Delphi с помощью Indy. Впринципе делаю всё как там написано. В итоге создал два .exe; один клиент, другой сервер. Пытаюсь подключить клиент к серверу (оба приложения находятся на одной рабочей станции). Почему-то клиент не подключается ! Я думаю всё дело в том, что я неправильно указал IP сервера у клиента.
Из вышесказанного вытекает вопрос, как узнать IP машины? Сам по себе вопрос несложный. Я использовал для его решения это: http://www.delphisources.ru/pages/fa...et_own_ip.html . Функция, описанная там выводит мне IP. Но когда я вставляю его в свойство Host клиента, затем пытаюсь подключиться, у меня это не получается ... Помогите кто чем может. Делаем'c разные игры. Искать на glscene.ru |
#2
|
|||
|
|||
А если попробовать 127.0.0.1?
Ну и в OnConnect сервера вставь какое-нить логирование - вообще хоть что-то подсоединяется. Можно для начала попробовать подключиться к серверу через telnet - проверить сам сервер. |
#3
|
|||
|
|||
Цитата:
Цитата:
Цитата:
Вобщем присылаю исходник сервера и клиента, вес файла 394kb: http://ifolder.ru/11774893 Делаем'c разные игры. Искать на glscene.ru Последний раз редактировалось DungeonLords, 23.04.2009 в 19:00. |
#4
|
|||
|
|||
telnet - эо специальная программка в винде. Когда писал свой почтовый сервис, тестировал именно с помощью ее. Благо почтовые протоколы достаточно простые.
Логирование - вывод какой-нить строчки текста в файл/мемо/и т.д. из соответсуующих событий. Ну и зачем такой большой файл? Убери из него бинарники - все-равно пересобирать для теста. А еще проще - можно выложить сразу сюда важные куски кода. Например, установка параметров клиента и открытие соединения и Установка параметров сервера и открытие порта на прослушивание. |
#5
|
|||
|
|||
Цитата:
Про большой файл. Разве? Мне кажется 394 это не так уж и много. Ну а .exe действительно надо было выкинуть, сглупил . P.S. Может всё же посмотришь код ? правка. Цитата:
Делаем'c разные игры. Искать на glscene.ru Последний раз редактировалось DungeonLords, 23.04.2009 в 19:09. |
#6
|
|||
|
|||
На тебе простейший пример на TIdTCPServer/Client
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer, IdContext, StdCtrls; type TForm1 = class(TForm) TCPServer: TIdTCPServer; TCPClient: TIdTCPClient; btStartServer: TButton; btConnect: TButton; edLog: TMemo; procedure btStartServerClick(Sender: TObject); procedure btConnectClick(Sender: TObject); procedure TCPServerExecute(AContext: TIdContext); procedure TCPServerConnect(AContext: TIdContext); procedure TCPServerDisconnect(AContext: TIdContext); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btStartServerClick(Sender: TObject); begin TCPServer.Active := True; end; procedure TForm1.btConnectClick(Sender: TObject); begin TCPClient.Connect; edLog.Lines.Add('Client: Connected.'); TCPClient.Disconnect; edLog.Lines.Add('Client: Disconnected.'); end; procedure TForm1.TCPServerExecute(AContext: TIdContext); begin edLog.Lines.Add('Server: client executed.'); end; procedure TForm1.TCPServerConnect(AContext: TIdContext); begin edLog.Lines.Add('Server: client connected.'); end; procedure TForm1.TCPServerDisconnect(AContext: TIdContext); begin edLog.Lines.Add('Server: client disconnected.'); end; end. В обоих компонентах в настройке указан порт 8080, а в клиенте еще и Host = 127.0.0.1. То, что они на одной форме - это не принципиально. Просто лень было несколько приложений городить. |