Telnet Server
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
Telnet Server
Hallo,
ich möchte ein programm schreiben, welches befehle, welche von einem telnet client kommen, verarbeitet und antwortet, ohne verschlüsselung oder sonst irgendwas. ich habe momtentan aber gar keine ahnung, wie ich so etwas realisieren kann.
ich möchte ein programm schreiben, welches befehle, welche von einem telnet client kommen, verarbeitet und antwortet, ohne verschlüsselung oder sonst irgendwas. ich habe momtentan aber gar keine ahnung, wie ich so etwas realisieren kann.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Viel erfolg
Nein ernsthaft was ist jetzt die Frage ? Solln wir sowas für dich machen ?
Wie immer wenn es um Internet dinge geht, schau dir Synapse oder LNet an und lerne. Dort sind für die meissten Standartaufgaben Server und Clients implementiert und du musst sie nur leicht abändern.
Nein ernsthaft was ist jetzt die Frage ? Solln wir sowas für dich machen ?
Wie immer wenn es um Internet dinge geht, schau dir Synapse oder LNet an und lerne. Dort sind für die meissten Standartaufgaben Server und Clients implementiert und du musst sie nur leicht abändern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Hier mal ein paar Anfangsideen, auch wenn ich nicht viel Ahnung von Telnet habe...
Da ich nur LNet (0.6.2) installiert habe, kurz ein paar Sachen dazu:
Es gibt eine Komponente TLTelnetClientComponent; die kannst du dir mal angucken. Ansonsten empfehle ich eine TCP-Verbindung (Komponenten sind auch dabei). Dann darfst du das Telnet-Protokoll selbst implementieren. Wikipedia hat ein paar Links zu den RFC-Dokumenten.
MfG Die Socke
Da ich nur LNet (0.6.2) installiert habe, kurz ein paar Sachen dazu:
Es gibt eine Komponente TLTelnetClientComponent; die kannst du dir mal angucken. Ansonsten empfehle ich eine TCP-Verbindung (Komponenten sind auch dabei). Dann darfst du das Telnet-Protokoll selbst implementieren. Wikipedia hat ein paar Links zu den RFC-Dokumenten.
MfG Die Socke
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Telnet ist eigentlich kein richtiges Protokoll, sondern heißt, dass einfach die Texte als Byte-String über den Socket geschickt werden. Für einen Telnet-Server reicht es also, einfach einen Server-Socket (Default bei Telnet ist Port 23) aufzumachen und auf eine Eingabe von einem Client zu warten.
-Michael
-Michael
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
So, ich kann das prog jetzt compileier (dieses echo demo), aber sobalt man auf den button clickt, beendet sich das programm, und im terminal kommt folgende ausgabe:
EDIT: das problem ist jetz gelöst, as prog beendet sich nicht mehr, die unit cthreads war nicht mit compiliert.
Jetzt beendet sich das prog nicht mehr, wenn ich auf den button clicke, aber es passwirst sonst auch nichts.
wie kann ich dieses echo demo austesten?
Code: Alles auswählen
This binary has no thread support compiled in.
Recompile the application with a thread-driver in the program uses clause before other units using thread.
Runtime error 232 at $0806D987
$0806D987
$0806DB85
$08229361 TTCPECHODAEMON__CREATE, line 35 of echo.pas
$080816BB TFORM1__BUTTON1CLICK, line 32 of unit1.pas
$08131139 TCONTROL__CLICK, line 2043 of ./include/control.inc
$08142E6F TBUTTONCONTROL__CLICK, line 57 of ./include/buttoncontrol.inc
$08143545 TCUSTOMBUTTON__CLICK, line 185 of ./include/buttons.inc
$08143981 TBUTTON__CLICK, line 318 of ./include/buttons.inc
$081436FA TCUSTOMBUTTON__WMDEFAULTCLICKED, line 240 of ./include/buttons.inc
$08066FA9
EDIT: das problem ist jetz gelöst, as prog beendet sich nicht mehr, die unit cthreads war nicht mit compiliert.
Jetzt beendet sich das prog nicht mehr, wenn ich auf den button clicke, aber es passwirst sonst auch nichts.
wie kann ich dieses echo demo austesten?
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
So, jet kann ich schon mal sachen an den server schicken, und der kann das dann auch interpretieren, das eluft schonmal super. aber wenn ich sachen zurück scicke, mit "Sendstring" dann kommt das immer in einer zeile, Sprich:
SendString('juhu');
SendString('jaaa');
ergibt beim client:
"juhujaaa"
wie bekomme ich das hin, das der automatisch eine neue zeile danach macht.?
SendString('juhu');
SendString('jaaa');
ergibt beim client:
"juhujaaa"
wie bekomme ich das hin, das der automatisch eine neue zeile danach macht.?
- af0815
- Lazarusforum e. V.
- Beiträge: 6212
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Rechnen ist auch einfach ... erklär das nur meiner Tochter
BTW: Über die Demos und Sourcen arbeiten brigt sehr viel Verständnis, man darf nur oft den Mut nicht verlieren.
BTW: Über die Demos und Sourcen arbeiten brigt sehr viel Verständnis, man darf nur oft den Mut nicht verlieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
Ich habe jetzt auch schon einen funktionierenden client, allerdings habe ich da noch ein problem. ich lese die antworten des servers in eine repeat until scheife aus. bis ein punkt an erster stelle kommt. dabwei ergibt sich dann natürlich das problem, dass es auch möglich ist, das ich eine fehler hafte anfrage sende, oder der server abestürzt ist, usw. wie kann ich auslesen, ob es noch daten gibt, welche ich auslesen kann?
momentan siht mein client so aus :
momentan siht mein client so aus :
Code: Alles auswählen
program unbenannt;
{$mode objfpc}{$H+}
uses crt,blcksock,classes,SysUtils;
var
sock: TTCPBlockSocket;
s: string[255];
r1 : string;
begin
sock:= ttcpblocksocket.Create;
try
sock.Connect('192.168.0.20','12345');
repeat
if sock.lastError<>0 then break;
readln(r1);
sock.SendString(r1 + CRLF);
repeat
s := sock.recvstring(15000);
writeln(s);
until s[1] = '.'
until r1 = 'exit'
//...
finally
sock.Free;
end;
end.
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
So, den client, habe ich jetzt auch vertig, is n kelines chat prog geworden.
allerdings sehe ich über all, bei den demos, bei den stellen wo man von einem thread auf eine globale variable zugreift eine TCriticalSection. ich denke, das es dafür ist, das nich2 2 gleichzeitig drauf zugreifen können, oder? is es wichtig das mit einzubauen?
allerdings sehe ich über all, bei den demos, bei den stellen wo man von einem thread auf eine globale variable zugreift eine TCriticalSection. ich denke, das es dafür ist, das nich2 2 gleichzeitig drauf zugreifen können, oder? is es wichtig das mit einzubauen?