Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.13;
Скачать: CL | DM;

Вниз

Поскажите плз как написать telnet сервер на основе TIdTelnetServe   Найти похожие ветки 

 
alexe   (2003-01-22 10:17) [0]

Поскажите плз как написать telnet сервер на основе TIdTelnetServer

как работать с данным компоненто (D6)

спасибо всем .. =о)


 
mrcat ©   (2003-01-22 13:15) [1]

alexe (22.01.03 10:17)
...
Поскажите плз как написать telnet сервер на основе TIdTelnetServer
как работать с данным компоненто (D6)
...


Вы открывали Demos\Indy\TelnetClient ?

Видели как работает клиент?

Для начала определитесь, какие действия Вам нужны со стороны Telnet Server


 
alexe   (2003-01-22 15:40) [2]

Посмотрел - аналогичное я уже написал (только работает) для считывания статистики и администрирования циски. Т.е. по телнету через 23 порт захожу и т.п.

а мне интересно как сервер сделать
----------------------------------------------
И еще вопросик не по теме ..
----------------------------------------------
Почему в терминальном режиме клиент(терминал) через сокет к серверу подключается а потом сразу гаснет(Active=False) а на форме пашет
----------------------------------------------
действия со стороны сервера:

1) идентификация клиента Имя и пароль
2) получение от клиента строк (запросы)
3) передача клиенту строк, потоков, ... (ответы)


 
mrcat ©   (2003-01-22 15:53) [3]

alexe (22.01.03 15:40)

Ну так Вы представляете, чем Ваш сервер в принципе должен заниматься?!


 
mrcat ©   (2003-01-22 15:55) [4]

alexe (22.01.03 15:40)
...
1) идентификация клиента Имя и пароль
2) получение от клиента строк (запросы)
3) передача клиенту строк, потоков, ... (ответы)
...


замечательно! и что не понятно?


 
mrcat ©   (2003-01-22 15:58) [5]

alexe (22.01.03 15:40)

...
...


Есть замечательный компонент: IdTCPServer/IdTCPClient
Ознакомьтесь с его работой (Demos\Indy\TCPStreamClientServer). Думаю, Вам все станет ясно...


 
alexe   (2003-01-22 16:21) [6]

Обьясните глупому почему сам клиент отключается от сервера ??

program ConsClient;

{$APPTYPE CONSOLE}

uses ...

type
TConsClientSocket = class(TClientSocket)
private
***
protected
procedure Event(Socket: TCustomWinSocket; SocketEvent: TSocketEvent); override;
public
end;

procedure TConsClientSocket.Event(Socket: TCustomWinSocket;
SocketEvent: TSocketEvent);
var
sA, sB, sD, cmd: string;
i, L, sLength: integer;
s: TStringList;
tf: TextFile;

procedure KillHeap;
begin
***
end;

begin
case SocketEvent of
seRead: begin
***
end;
seConnecting: begin
fState := "ON line";
end;
seDisconnect: begin
fState := "OFF line";
end;
seLookup: begin
fState := "Looking server ..";
end;
seListen: begin
fState := "wait ..";
end;
end;
if fStateOld <> fState then begin
fStateOld := fState;
Writeln(">"+ fState);
end;

inherited;

end;

var
Cons: TConsClientSocket;
x: integer;
s: string;

begin

Cons := TConsClientSocket.Create(nil);
with Cons do begin
***
ClientType := ctNonBlocking;
Port := 1212;
Address := "10.54.0.51";
Active := True;
end;

while True do begin
Readln(s);
if not Cons.Active then begin
Cons.Active := True;
Cons.Socket.SendText(s);
end;
end;
end.



 
alexe   (2003-01-22 16:23) [7]

Cons := TConsClientSocket.Create(nil); << может поэтому ??


 
mrcat ©   (2003-01-22 16:26) [8]


что это вообще такое? Вы понимаете как работает консольное приложение? С какой стати ему вообще подключаться?


 
alexe   (2003-01-23 08:08) [9]

значит ли это что из консоли нельзя подключиться к серверу (TServerSocket, TIdTelnetServer, .. )?

если можно то я и спрашиваю ВАС КАК =о)

Cons := TConsClientSocket.Create(nil); << я и спросил вас может существоваать сокет без окна - владельца, если ДА то КАК?

telnet работает же в консоли .. а реализвция его идентична (предок то один)


 
mrcat ©   (2003-01-23 09:38) [10]

alexe (23.01.03 08:08)

с консоли подключится можно:

Digitman © (20.01.03 08:36)

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


Не формы, а окна !!!!
Это значит, что конс.приложение по умолчанию не имеет механизма приема Windows-сообщений. Этот механизм нужно организовать самостоятельно


> Я решил написать консольное приложение так как форма в этой
> програме ненужна, прога будет висеть в памяти и ловить сообщения
> с клинта и выполнять различные действия оставаясь нивидимой.


А разве "прога" обязательно видима, если она неконсольная ?
---------------------------------------------------------------

> Как этот механизм организовать самостоятельно? Если не секрет
> конечно :)


Да какой там секрет ?)
Обычным образом.

var
hWnd: THandle;
Msg: TMsg;
....

hWnd := CreateWindowEx(...);
While GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
DestroyWindow(hWnd);


 
alexe   (2003-01-23 13:58) [11]

мистер Кот =о) подскажите что я тут не так делаю ...
ткните носом глупого ..
научите необразованного ..

var
Cons: TConsClientSocket;
hWnd: THandle;
Msg: TMsg;
// Cons: TClientSocket;
s: string;

begin

Cons := TConsClientSocket.Create(nil);
// Cons := TClientSocket.Create(nil);

hWnd := CreateWindowEx(0,"ConsClient","ConsClient",ws_OverlappedWindow,0,0,0,0,0,0,HInstance,nil);
with Cons do begin
ClientType := ctNonBlocking;
Port := 1212;
Address := "10.54.0.51";
Active := True;
end;
try
While True or GetMessage(Msg, hWnd, 0, 0) do begin

TranslateMessage(Msg);
DispatchMessage(Msg);

Readln(s);
if UpperCase(s) = "EXIT" then Break else
Cons.Socket.SendText(sc_MSG + s);
end;
finally
Cons.Active := False;
Cons.Free;
end;
DestroyWindow(hWnd);

end.


 
mrcat ©   (2003-01-23 16:33) [12]

While True or GetMessage(Msg, hWnd, 0, 0) do begin

что это такое??? Вы представляете себе, что будет происходить в программе при таком "условии"??!

Понятно же написано:
While GetMessage(Msg, hWnd, 0, 0)


 
alexe   (2003-01-23 17:19) [13]

спасибо я уже сам дошел :

и встречный вопрос как можно организовать одновременную работу клиента на прием сообщений и считывания Readln() из консоли ?

var
Cons: TConsClientSocket;
s: string;
hWnd: THandle;
Msg: TMsg;

begin
hWnd := CreateWindow(sClassName, "", WS_OVERLAPPEDWINDOW, 0, 0, 0, 0, 0, 0, hInstance, NIL);
Cons := TConsClientSocket.Create(nil);
with Cons do begin
ClientType := ctNonBlocking;
Port := 1212;
Address := "10.54.0.51";
Active := True;
end;
while GetMessage(Msg, HWnd, 0, 0) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.



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

Текущий архив: 2003.03.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
14-39556
Дмитрий К.К.
2003-02-26 15:25
2003.03.13
Виртуозам Flash а


3-39205
Ju
2003-02-19 16:11
2003.03.13
Ошибка -901


6-39438
NightCon
2003-01-21 12:25
2003.03.13
Обмен данными между формами IntraWeb


6-39441
KasAlex
2003-01-22 15:53
2003.03.13
Сокеты. Нет коннекта при определенном условии


4-39636
Max2002
2003-01-23 12:35
2003.03.13
поиск текста в TWebBrowser