Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Sedlex
6 / 6 / 7
Регистрация: 13.01.2013
Сообщений: 122
1

Клиент-Серверное взаимодействие в Delphi

08.06.2013, 18:11. Просмотров 618. Ответов 8
Метки нет (Все метки)

Здравствуйте уважаемые форумчане, возник вопрос по взаимодействию в Delphi 7.

Реализовал такую вещь, Есть клиент кототорый управляет условным танком на сервере.

Вот код клиента
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
unit Client;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Sockets, StdCtrls;
 
type
  TForm1 = class(TForm)
    BtnUP: TButton;
    BtnBottom: TButton;
    BtnLeft: TButton;
    BtnRight: TButton;
    TcpClient1: TTcpClient;
    procedure BtnUPClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnBottomClick(Sender: TObject);
    procedure BtnRightClick(Sender: TObject);
    procedure BtnLeftClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.BtnUPClick(Sender: TObject);
begin
if TcpClient1.Connect then
  Tcpclient1.Sendln('top')
  else
    showmessage('error');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
TcpClient1.RemoteHost:='127.0.0.1';
Tcpclient1.RemotePort:='33';
TcpClient1.Active:=true;
end;
 
procedure TForm1.BtnBottomClick(Sender: TObject);
begin
if TcpClient1.Connect then
  Tcpclient1.Sendln('bottom')
  else
    showmessage('error');
end;
 
procedure TForm1.BtnRightClick(Sender: TObject);
begin
if TcpClient1.Connect then
  Tcpclient1.Sendln('right')
  else
    showmessage('error');
end;
 
procedure TForm1.BtnLeftClick(Sender: TObject);
begin
if TcpClient1.Connect then
  Tcpclient1.Sendln('left')
  else
    showmessage('error');
end;
 
end.
А вот сервера

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
unit Server;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Sockets, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    TcpServer1: TTcpServer;
    BitBtn1: TBitBtn;
    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var
  stream:Tmemorystream;
  msg:string;
  sz:integer;
begin
 msg:=Clientsocket.Receiveln;
 Form1.Caption:=msg;
 if (msg='left') then bitBtn1.Left:= left+30;
 if (msg='right') then bitBtn1.Left:=left-30;
 if (msg = 'top') then bitBtn1.Top:=top-30;
 if (msg = 'bottom') then BitBtn1.Top:=top+30;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
TcpServer1.LocalHost:='127.0.0.1';
TcpServer1.LocalPort:='33';
TcpServer1.Active:=true;
end;
 
end.
Проблема в том что соединение есть, а команды не исполняются на сервере.
Подскажите что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 18:11
Ответы с готовыми решениями:

Delphi. Winsock клиент-серверное приложение
Server: unit Unit1; interface uses Windows, Messages, SysUtils,...

Клиент-серверное приложение
Здравствуйте, кому не сложно помогите реализовать работу программы. Клиентская...

Клиент-серверное приложение
Здравствуйте, уважаемые форумчане! У меня вот такая проблема. Мне нужно...

Клиент Серверное приложение
Проблемка следующая (Delphi) необходимо чтобы из БД (база данных) сервера...

Клиент серверное приложение
Пишу клиент серверное приложение и столкнулся с проблемой. Клиент получает с...

8
Dr_Quake
Заблокирован
08.06.2013, 20:07 2
Таки вообще или только первая исполняется? Тут чётко видно что дисконнекта нету например. Дебаг сервера на recieveLn.

К слову, что за фигня у тебя с CLientSocket, это какая версия Indy? У меня уже в XE совсем по другому.
0
саша40
-46 / 291 / 47
Регистрация: 14.08.2012
Сообщений: 2,565
08.06.2013, 23:53 3
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Таки вообще или только первая исполняется? Тут чётко видно что дисконнекта нету например. Дебаг сервера на recieveLn.

К слову, что за фигня у тебя с CLientSocket, это какая версия Indy? У меня уже в XE совсем по другому.
ClientSocket и ServerSocket у него. Это не indy. Их нет в старших версиях Delphi. Автор, а ты правильно все команды обработал?
0
Dr_Quake
Заблокирован
09.06.2013, 00:19 4
А, вспомнил. Так для них же СОВСЕМ по другому надо. Это уже у новых indy tcp server автоматом обрабатывается OnExecute/OnConnect(в новых) в новый поток, а там руками...
0
Sedlex
6 / 6 / 7
Регистрация: 13.01.2013
Сообщений: 122
09.06.2013, 13:40  [ТС] 5
Не знаю правильно ли обработал...
Подскажите как?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
09.06.2013, 14:01 6
Цитата Сообщение от саша40 Посмотреть сообщение
ClientSocket и ServerSocket у него
Опять знакомые буквы увидел ?
Не ClientSocket и ServerSocket это.
0
саша40
-46 / 291 / 47
Регистрация: 14.08.2012
Сообщений: 2,565
09.06.2013, 14:21 7
Цитата Сообщение от mss Посмотреть сообщение
Опять знакомые буквы увидел ?
Не ClientSocket и ServerSocket это.
Я уже позже увидел, что тут TCP.
0
Dr_Quake
Заблокирован
09.06.2013, 14:41 8
Погоды не делает. Смысл не меняется для старой версии. Код полный нужен и версия Delphi.
0
Sedlex
6 / 6 / 7
Регистрация: 13.01.2013
Сообщений: 122
10.06.2013, 00:20  [ТС] 9
Это полный код, и то что это Delphi 7 написано выше.
0
10.06.2013, 00:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 00:20

Клиент-серверное приложение
Всем привет! Возник такой вопрос: как при нажатии на сервере кнопку, у клиента...

Как из автономной бд сделать клиент-серверное приложение?
как из автономной бд сделать клиент-серверное приложение? тематика бд автопрокат

как создать клиент - серверное приложение на Дельфи(((
помогите плиз скинте ссылку на почту ALmasSide_kz@mail.ru


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru