Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
1-39245
Сергей
2003-03-02 13:14
2003.03.13
Передача параметров


14-39516
artul
2003-02-25 10:40
2003.03.13
DBEXpress где взять


1-39393
Dimedrol
2003-03-01 14:28
2003.03.13
Обводка вокруг CheckBox-a


6-39434
_dmitry
2003-01-22 10:55
2003.03.13
Помогите! Не пойму в чем ошибка!


4-39622
OldFrits
2003-01-21 02:01
2003.03.13
Загрузка 16 битной Dll в Delphi 5.0





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский