Форум: "Сети";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
ВнизПоскажите плз как написать 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c