IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Сокеты и консоль
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Животрепещущий вопрос: возможно ли в консоли присвоить событию сокета (OnRead, например) свою процедуру? Например, Client.onread:=myevent;. Описать её (myevent) получается, а вот присвоить правильно - нет..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Спасибо, вот так компилируется, ООП сила:)
Только вот будут ли обрабатываться события при таком описании? Я вот ради интереса попробовал в консоли сделать клиентскую и серверную части, просто чтобы можно было передать строку текста с клиента на сервер, вот что получилось.

Сервер:

program Project1;

{$APPTYPE CONSOLE}

uses
Windows,
SysUtils,
Classes,
ScktComp,
Graphics;

type
TFooClass = class(TObject)
server:TServersocket;
procedure Event1(Sender: TObject; Socket: TCustomWinSocket);
end;

Procedure TFooClass.Event1(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln(socket.receivetext);
end;

var
obj:TFooClass;
begin
obj:=TFooClass.Create;
with obj do begin
server:=TServerSocket.create(nil);
server.port:=1001;
server.OnClientRead:=event1;
server.ServerType:=stNonBlocking;
server.Open;
while server.active do sleep(100);
end;
obj.Free;
end.



Клиент:

program Project1;

{$APPTYPE CONSOLE}

uses
Windows,
SysUtils,
Classes,
ScktComp,
Graphics;

type
TFooClass = class(TObject)
client:Tclientsocket;
procedure Event2(Sender: TObject; Socket: TCustomWinSocket);
end;

var host:string;
key:string;
Procedure TFooClass.Event2(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln('СОЕДИНЕНО!!!');
end;

var
obj:TFooClass;
begin
writeln('Введите IP-адрес сервера');
readln(host);
obj:=TFooClass.Create;
with obj do begin
client:=TClientSocket.create(nil);
client.port:=1001;
client.Onconnect:=event2;
client.clientType:=CtNonBlocking;
client.Address:=host;
client.Open;
repeat
key:='';
readln(key);
client.Socket.SendText(key);
until key='EXIT';
end;
obj.Free;
end.



Вот на событие OnConnecting обработчик срабатывает, а на OnConnect никак, строка тоже не передаётся, хотя пробовал своим проектом на VCL подсоединиться к консольному серверу - получилось.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 3:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name