Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

ПОМОГИТЕ ! Как передать данные от одного приложения по сети друго   Найти похожие ветки 

 
antoxa2005   (2005-09-30 12:33) [0]

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

Не могу реализовать уже две недели.


 
Digitman ©   (2005-09-30 12:49) [1]


> Не могу реализовать уже две недели


Тады рассказывай, что делал и сделал за эти две недели ...

Не дурака ж валял, наверно - какие-то наработки таки поимел, пусть и не фунциклирующие ожидаемым образом ..


 
shamansky   (2005-09-30 12:54) [2]

ставишь компоненту clientsocket и serversocket

// Client Program:
// Send "power" to Client to shutdown the machine.
// Send "reset" to Client to reset the machine.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ScktComp;

type
  TForm1 = class(TForm)
    Clientsocket1: TClientSocket;
    StatusBar1: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Button3: TButton;
    CheckBox1: TCheckBox;
    Checkbox2: TCheckBox;
    procedure Button1Click(Sender : TObject);
    procedure Button2Click(Sender : TObject);
    procedure Clientsocket1Error(Sender : TObject; Socket : TCustomWinSocket;
      ErrorEvent : TErrorEvent; var ErrorCode : integer);
    procedure Clientsocket1Disconnect(Sender : TObject;
      Socket : TCustomWinSocket);
    procedure Clientsocket1Connect(Sender : TObject;
      Socket : TCustomWinSocket);
    procedure Button3Click(Sender : TObject);
    procedure FormClose(Sender : TObject; var Action : TCloseAction);
    procedure FormDestroy(Sender : TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender : TObject);
begin
  Clientsocket1.Active := True;
end;

procedure TForm1.Button2Click(Sender : TObject);
begin
  Clientsocket1.Active := False;
end;

procedure TForm1.Clientsocket1Error(Sender : TObject;
  Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
  var ErrorCode : integer);
begin
  errorcode := 0;
  StatusBar1.SimpleText := "Error";
end;

procedure TForm1.Clientsocket1Disconnect(Sender : TObject;
  Socket : TCustomWinSocket);
begin
  StatusBar1.SimpleText := "Disconnect";
end;

procedure TForm1.Clientsocket1Connect(Sender : TObject;
  Socket : TCustomWinSocket);
begin
  StatusBar1.SimpleText := Clientsocket1.Address;
end;

procedure TForm1.Button3Click(Sender : TObject);
var
  ukaz : string;
  orders : string;
  Text : string;
  box : string;
begin
  ukaz := edit1.Text;
  Clientsocket1.Socket.SendText(ukaz);
  if checkbox1.Checked = True then
  begin
    orders := "power";
    Clientsocket1.Socket.SendText(orders);
  end;
  if Checkbox2.Checked = True then
  begin
    Text := "reset";
    Clientsocket1.Socket.SendText(Text);
  end;
end;

procedure TForm1.FormClose(Sender : TObject; var Action : TCloseAction);
begin
  Clientsocket1.Active := False;
end;

procedure TForm1.FormDestroy(Sender : TObject);
begin
  Clientsocket1.Active := False;
end;

end.

// Client Program

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Serversocket1: TServerSocket;
    procedure FormClose(Sender : TObject; var Action : TCloseAction);
    procedure FormDestroy(Sender : TObject);
    procedure FormCreate(Sender : TObject);
    procedure Serversocket1ClientError(Sender : TObject;
      Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
      var ErrorCode : integer);
    procedure Serversocket1ClientRead(Sender : TObject;
      Socket : TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender : TObject; var Action : TCloseAction);
begin
  Serversocket1.Active := False;
end;

procedure TForm1.FormDestroy(Sender : TObject);
begin
  Serversocket1.Active := False;
end;

procedure TForm1.FormCreate(Sender : TObject);
begin
  Serversocket1.Active := True;
end;

procedure TForm1.Serversocket1ClientError(Sender : TObject;
  Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
  var ErrorCode : integer);
begin
  errorcode := 0;
end;

procedure TForm1.Serversocket1ClientRead(Sender : TObject;
  Socket : TCustomWinSocket);
var
  ukaz : string;
  orders : string;
  Text : string;
  box : string;
begin
  ukaz := socket.ReceiveText;
  label1.Caption := "reciving...";
  ShellExecute(Handle, "open", PChar(ukaz), PChar(""), nil, sw_show);
  Text := socket.ReceiveText;
  orders := socket.ReceiveText;
  if orders = "power" then
  begin
    ShellExecute(Handle, "open", PChar("shutdown.exe"), PChar("-s"), nil, sw_show);
    Application.MessageBox("You will be turned off", "Warning", mb_iconexclamation);
    Serversocket1.Active := False;
    Form1.Close;
  end;
  if Text = "reset" then
  begin
    ShellExecute(Handle, "open", PChar("shutdown.exe"), PChar("-r"), nil, sw_show);
    Application.MessageBox("You will be reset", "Warning", mb_iconexclamation);
    Serversocket1.Active := False;
    Form1.Close;
  end;
end;

end.


 
Digitman ©   (2005-09-30 16:29) [3]


> shamansky   (30.09.05 12:54) [2]


это НЕ будет работать в условиях глоб.сети.


 
kami ©   (2005-09-30 19:00) [4]

Digitman ©   (30.09.05 16:29) [3]
Почему ?


 
antoxa2005   (2005-10-01 08:39) [5]

Нет, как передать на сервер и получить ответ я знаю.

Мне необходимо чтобы после отправки сообщения серверу программа проверила получила ли она от сервера ответ именно на свое сообщение вообще и правильный ли ответ она получила.


 
Wistful ©   (2005-10-02 00:15) [6]

создай свою структуру сообщения где указывается например отправитель, получатель, код сообщения или что-то в этом роде.

что в данном случае значит "правильный ли ответ" я если честно не понял.


 
antoxa2005   (2005-10-02 04:07) [7]

Короче я отправляю сообщение на сервер sendText("1234567890")
запускаю таймер на несколько секунд в это время от сервера приходит ответ и процедура на клиенте Read... отрабатывает т.е. записывает значение ответа в переменную к этому времени таймер отщелкивает свой первый "тайм" и программа проверяет переменную если там что-то есть и если это что-то то, что надо, то ОК иначе не ОК.

Т.к. я понял не возможно проверить ответил ли сервер на сообщение или нет кроме как подождать по таймеру время с запасом для прохождения вопрос-ответ и проверить значения переменных.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1135325317
bva
2005-12-23 11:08
2006.01.15
Отключить программно Ctrl+Alt+Del


4-1131446444
psa247
2005-11-08 13:40
2006.01.15
EnumChildWindows !


2-1135633583
Danja
2005-12-27 00:46
2006.01.15
Pen.Color хочу изменить цвет!


14-1134973829
Интересно мне
2005-12-19 09:30
2006.01.15
День добрый!


1-1133968848
Gugle
2005-12-07 18:20
2006.01.15
Исчезает ComboBox из StringGrid-а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский