Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сетевое приложение [D2005, XP]


News ©   (2007-05-18 14:25:00) 

Здравствуйте! Пытаюсь разобраться с написанием сетевых приложений в Delphi, набрал простенький код, но он не работает. Подскажите, пожалуйста, что я делаю не так?

Код для клиента:unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, IdComponent, IdUDPClient, IdUDPServer, IdBaseComponent, IdUDPBase;

type
 TForm2 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   IdUDPClient1: TIdUDPClient;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation
uses Server;
{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
IdUDPClient1.Active:=true;
IdUDPClient1.Send(Edit1.Text);
IdUDPClient1.Active:=false;
end;
end.

Код для сервера:
unit Server;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, IdComponent, IdUDPServer, IdUDPClient, IdSocketHandle,
 IdBaseComponent, IdUDPBase;
type
 TForm1 = class(TForm)
   IdUDPServer1: TIdUDPServer;
   Memo1: TMemo;
   procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
     ABinding: TIdSocketHandle);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
begin
 Memo1.Clear;
 Memo1.Lines.LoadFromStream(AData);
end;
end.
Суть в том, чтобы при нажатии кнопки на форме клиента введенная в эдит строка выводилась в мемо у сервера, но при запуске либо вообще ничего не происходит, либо вылетает ошибка "Error Socket #100449". В свойстве Bindings я задаю IP-адрес 127.0.0.1, порт 0.


turbouser   (2007-05-18 20:45:00) [1]


> News   (18.05.07 19:16) [8]

Посмотрите уже примеры.
http://www.indyproject.org/Sockets/Demos/index.EN.aspx


News   (2007-05-18 19:16:00) [2]

Понимаете, я совсем-совсем новичок, и многого не знаю. Как открыть сокет на сервере?


Новичек   (2007-05-18 17:47:00) [3]

Имелось в виду от крывать :-)


Savek   (2007-05-18 17:39:00) [4]

На сервере сокет кто будет отрывать?


News   (2007-05-18 17:02:00) [5]


> Бери любой выше 1000, только одинаковый у клиента и сервер

Взял 6000, ничего не изменилось.


Сергей М.   (2007-05-18 15:07:00) [6]


> я вообще не знаю, какие нужно открывать


Ну так в таком случае не трогай св-во Bindings вообще.


DVM   (2007-05-18 15:05:00) [7]


> Дело в том, что я вообще не знаю, какие нужно открывать.

Бери любой выше 1000, только одинаковый у клиента и сервер


News   (2007-05-18 15:03:00) [8]


> Открывай только нужные тебе порты.

Какие? Дело в том, что я вообще не знаю, какие нужно открывать.


DVM   (2007-05-18 14:28:00) [9]


> В свойстве Bindings я задаю IP-адрес 127.0.0.1, порт 0.

То есть ты пытаешься открыть все порты? А часть из них занята. Сервер не стартует. Открывай только нужные тебе порты.


Наверх

Титульная страница Поиск, карта сайта Написать письмо