The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > High-Level-Programmierung
.
Google unix.com



High-Level-Programmierung Post Fragen zu C, C + +, Java, SQL, und andere Programmiersprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Ich möchte, dass ein UDP-Client-Programm erhalten Nirmala IP-Networking 1 06-10-2005 04:46 PM
IP-Adresse des Telnet-Client vtran4270 UNIX for Dummies Questions & Answers 1 09-12-2002 05:34 PM
Ist Telnet-Client-Bibliothek gibt es? aho High-Level-Programmierung 0 09-11-2002 09:45 AM
Telnet-Client-IP-Ermittlung thomas.jones High-Level-Programmierung 0 08-08-2002 07:17 PM
Mit Telnet-Client von Mac OS X die Befehlszeile Terminal tylerl UNIX for Dummies Questions & Answers 2 07-15-2001 11:05 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Bewertung: Thread Rating: 1 votes, 5.00 average. Anzeige-Modi
  #1 (permalink)  
Old 01-04-2002
thinker130 thinker130 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2002
Beiträge: 6
Wie man einen telnet-Client-Programm?

Hallo, Experten:
Ich habe programmiert eine einfache Telnet-Client in SCO UNIX 5.0.5, hat der Kunde an der ersten Möglichkeit gedacht Verhandlungen, aber ich kann keine Login-Prompt vom Server. Bitte helfen Sie mir.
  #2 (permalink)  
Old 01-08-2002
thalex thalex is offline
Registrierte Nutzer
  
 

Join Date: Nov 2001
Beiträge: 33
Aktivieren Sie diese http://jos.sweetcherrie.com/src/telnet.c.html
  #3 (permalink)  
Old 01-16-2002
thinker130 thinker130 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2002
Beiträge: 6
Vielen Dank, thalex, aber ich habe nicht das Problem von heute.

Zuletzt bearbeitet von thinker130; am 01-16-2002 04:44 AM..
  #4 (permalink)  
Old 01-16-2002
thinker130 thinker130 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2002
Beiträge: 6
die Source-Datei (die erste Hälfte)

Ich die Quelldateien wie belows, zu denen auch tel_cli.c und tel_cli.h. Kann jemand mir sagen, wie kann ich Login-Prompt und Passwort aus dem Remote-Host?

tel_cli.c:
/ / Name: tel_cli.c
/ / Autor: Robert
/ / Datum: 03. Januar 2002 ---?
/ / Called: Dieses Modul ist ein Teil von <<Traffic Daten Management>> Anwendung.
/ / Zweck: Dient zum Login in die Remote-Computer, und führen Sie Befehl auf dem Remote-Rechner.
/ / Format: tel_cli $ 1
/ / Input: $ 1 ist der Hostname des Remote-Rechner, config in der lokalen Datei / etc / hosts.
/ / Beispiel: tel_cli 134.132.5.11 oder tel_cli lyts1
/ / Rückgabe: keine


# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <ctype.h>
# include <fcntl.h>
# include <termio.h>
# include <unistd.h>
# include <stdarg.h>
# include <signal.h>
# include <time.h>
# include <sys/types.h>
# include <sys/socket.h>
# include <netdb.h>
# include <netinet/in.h>
# include <sys/select.h>
# include <arpa/inet.h>
# include <stdarg.h>
# include "tel_cli.h"

# define LINELEN 256


/ / Der Bau gehören Option-ID, Namen und die Option Option Flagge, der Flagge zeigt,
/ / Wenn der Client-Antwort auf die Option Ja oder Nein, flag \u003d\u003d 1 bedeutet, dass ja.
struct OptionFlag
(
int id;
char * Name;
int flag;
);
struct OptionFlag struOptionFlag [40];


extern int errno;

int create_server (int port);
int create_ftp_cli (const char * host, const char * Service);
int get_reply (int sock);
int get_ts (int sock);
int connectTCP (const char * host, const char * Service);
int errexit (const char * Format ,...);

void sigroutine (int unused);

int ser_sock; / / Der Socket-Server wartet auf den FTP-Server zu verbinden und zu akzeptieren, ihnen eine data_sock.
int data_sock \u003d 0; / / die Buchse für den Empfang oder Senden von Daten-Datei.
int ctrl_sock;

int para [7];
char * gs_filename; / / Dateinamen brauchen wir
char * gs_omc_passwd;
int g_iFileLen; / / die Länge der Datei
int g_iReceivedLen \u003d 0; / / die Bytes empfangen wurde

unsigned char gsSendMsg [LINELEN];
unsigned char gsReceiveMsg [LINELEN];


fd_set all_fds;


/ / Wesentliche Fortschritte erzielt, abhängig von der Anzahl der Parameter, die Anwendung wird entscheiden, was zu tun ist.
int main (int argc, char * argv [])
(
char * host \u003d "lyts1"; / / Host zu verwenden, wenn keine geliefert
char * service \u003d "telnet"; / / Standard-Service-Name

switch (argc)
(
Fall 1:

printf ( "Usage: getFile [Front-Namen JJMMTT] \ n");
exit (1);

Fall 3:
/ / Service \u003d argv [2];
printf ( "Usage: getFile [Front-Namen JJMMTT] \ n");

Fall 2:
host \u003d argv [1];
/ / gs_omc_passwd \u003d argv [2];
/ / gs_filename \u003d argv [3];
break;

Standard:
fprintf (stderr, "Usage: getFile [Front-Namen JJMMTT] \ n");
exit (1);
)

FD_ZERO (& all_fds);
ctrl_sock \u003d create_telnet_cli (Host-, Service);
FD_SET (ctrl_sock, & all_fds);
printf ( "ctrl_sock:% d \ n", ctrl_sock);

/ / send_command (ctrl_sock);
exit (0);
)


/ / Designer: Robert
/ / Datum: 03. Januar 2002 ---?
/ / Called: Dieses Modul ist nach den wichtigsten Prozess.
/ / Zweck: zur Erstellung einer Buchse an den angegebenen Host, dann mit dem Gastgeber haben die Wahl,
/ / Senden Login-Namen und ein Passwort, um den Host, sock_id zurück.
/ / Input: $ 1 (char * host): Ist der Host-Name des Remote-Rechner.
/ / $ 2 (char * Service): ist der Service-Typ von der Remote-Rechner, config in der lokalen Datei / etc / services.
/ / Return: li_sock
int create_telnet_cli (const char * host, const char * Service)
(
unsigned char rbuf [LINELEN]; / / Puffer für eine Zeile des Textes
unsigned char wbuf [LINELEN]; / / Puffer für eine Zeile des Textes
unsigned char msg [LINELEN];
unsigned char ch;
unsigned char lcOption;
int li_sock, li_count; / / li_socket Schlagwort, count
int outchars, inchars; / / Zeichen gesendet und empfangen
int i;

printf ( "Eingabe in telnet_cli \ n");
li_sock \u003d connectTCP (Host-, Service);
printf ( "li_socket ist:% d \ n", li_sock);
bzero (wbuf, LINELEN);
bzero (rbuf, LINELEN);


sprintf (wbuf, "% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c% c \ n ", IAC, DODO, 3, IAC, Will, 24, IAC, Will, 31, \
IAC, Will, 32, IAC, Will, 33, IAC, Will, 34, IAC, Will, 39, IAC, DODO, 5);
write (li_sock, wbuf, strlen (wbuf));

/ / sprintf (wbuf, "% c% c% c \ n", IAC, Wont, 37);
/ / write (li_sock, wbuf, strlen (wbuf));

while ((li_count \u003d recv (li_sock, rbuf, LINELEN, 0))> \u003d 0)
(
printf ( "Länge:% d,% s \ n", li_count, rbuf);
/ / Sleep (5);
if (li_count \u003d\u003d 0)
(
printf ( "Socket wurde geschlossen! \ n");
exit (1);
)
/ / if li_count> 0, bedeutet dies, dass die Steckdose hat einige Figuren aus dem Server
for (i \u003d 0; i <\u003d li_count - 1;)
(
printf ( "rbuf [% d] ist:% d \ n", i, rbuf [i]);
/ / sleep (2);
/ / ch \u003d rbuf [i];
/ / printf ( "% c \ n", ch);
if (rbuf [i] \u003d\u003d IAC)
(
/ / printf ( "rbuf [% d] ist IAC \ n", i);
/ / gsSendMsg [i] \u003d rbuf [i];

ch \u003d rbuf [i + 1];
printf ( "% d \ n", ch);
/ / i + +;
lcOption \u003d rbuf [i + 2];
printf ( "fdsafafsafasfsafsa% d \ n", lcOption);
i \u003d i + 3;
switch (ch)
(
Fall DODO:
if (lcOption \u003d\u003d AUTH)
(
printf ( "RECV DO AUTHENTICATION (37) \ n");
/ / Sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, Wont, auth);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)

if (lcOption \u003d\u003d NAWS)
(
printf ( "RECV DO NAWS (31) \ n");
/ / Sleep (5);
bzero (gsSendMsg, LINELEN);
////// SEND IAC SB NAWS 0 132 (132) 0 52 (52)
/ / der Schlüssel ist, um SB-Syntax.
sprintf (gsSendMsg, "% c% c% c% d% d% d% d% c% c \ n", IAC, SB, NAWS, 0,80,0,24, IAC, SE);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)

if (lcOption \u003d\u003d XDISPLOC)
(
printf ( "RECV DO XDISPLOC (35) \ n");
/ / Sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, Wont, XDISPLOC);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)

if (lcOption \u003d\u003d OLD_ENVIRON)
(
printf ( "RECV DO OLD-ENVIRON (36) \ n");
/ / Sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, Wont, OLD_ENVIRON);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)
if (lcOption \u003d\u003d ECHO_ON)
(
printf ( "RECV DO ECHO (1) \ n");
sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, Wont, ECHO_ON);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)
break;

Fall DONT:
printf ( "ch ist DONT \ n");
break;
Fall:
if (lcOption \u003d\u003d ECHO_ON)
(
printf ( "RECV WILL ECHO (1) \ n");
sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, DODO, ECHO_ON);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)
break;
  #5 (permalink)  
Old 01-16-2002
thinker130 thinker130 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2002
Beiträge: 6
der Quelldatei (die zweite Hälfte tel_cli.c und tel_cli.h)

Wont Fall:
break;
Fall SB:
printf ( "ch ist SB \ n");
sleep (5);
if (lcOption \u003d\u003d TSPEED)
(
printf ( "RECV IAC SB TERMINAL-SPEED SEND (32) \ n");
printf ( "% d% d% d \ n", rbuf [i], rbuf [i + 1], rbuf [i + 2]);
/ / i \u003d i + 3;
sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c% c% d% d% d% d% c% c \ n", IAC, SB, TSPEED, IS, 38400>> 8, (38400 & 0xFF), 38400> > 8, (38400 & 0xFF), IAC, SE);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)
if (lcOption \u003d\u003d NEW_ENVIRON)
(
printf ( "RECV IAC SB NEW-ENVIRON SEND (39) \ n");
printf ( "% d% d% d \ n", rbuf [i], rbuf [i + 1], rbuf [i + 2]);
/ / i \u003d i + 3;
sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c% c% c% c \ n", IAC, SB, NEW_ENVIRON, IS, IAC, SE);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
)

if (lcOption \u003d\u003d Terminal)
(
printf ( "RECV IAC SB TERMINAL-TYPE SEND (24) \ n");
printf ( "% d% d% d \ n", rbuf [i], rbuf [i + 1], rbuf [i + 2]);
/ / i \u003d i + 3;
sleep (5);
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c% c% s% c% c \ n", IAC, SB, NEW_ENVIRON, IS, "ANSI", IAC, SE);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
printf ( "okokok \ n");
bzero (gsSendMsg, LINELEN);
sprintf (gsSendMsg, "% c% c% c \ n", IAC, DODO, ECHO_ON);
write (li_sock, gsSendMsg, strlen (gsSendMsg));
printf ( "okokok \ n");
)
i \u003d i + 3;
break;

Standard:
printf ( "ch ist ein anderes Zeichen \ n");
break;
)

)
sonst
(
/ / printf ( "ch ist nicht IAC, gibt es vielleicht noch einige Fehler auftreten! \ n");
i + +;
)
)
)
)



tel_cli.h:

/ / telnet Befehlscode
# define IAC 255
# define DODO 253
# define DONT 254
# define WIRD 251
# define Wont 252
# define SB 250
# define SE 240
# define ist'0 '
# define SEND'1 '
# define INFO'2 '
# define VAR'0 '
# define VALUE'1 '
# define ESC'2 '
# define USERVAR'3 '

/ / Option Namen und ID
# define ECHO_ON 1
# define GO_AHEAD 3
# define Status 5
# define TIMER 6
# define 24
# define NAWS 31
# define TSPEED 32
# define FLOW 33
# define LINEMODE 34
# define XDISPLOC 35 / / X-Display-Lage
# define OLD_ENVIRON 36 / / Alte - Umgebungsvariablen
# define AUTH 37
# define NEW_ENVIRON 39
  #6 (permalink)  
Old 01-16-2002
thinker130 thinker130 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2002
Beiträge: 6
die Source-Dateien (den dritten Teil)

Ich habe vergessen, einige Funktionen in der Datei tel_cli.c, wenden Sie sich bitte append belowed der Source-Code an das Ende der Datei tel_cli.c.


/ * connectsock - Zuweisung und eine Socket-Verbindung über TCP oder TCP * /
int connectsock (const char * host, const char * Service, const char * Transport)
/ * Argumente:
* Host --- Name des Host, mit dem gewünschten Verbindung
* Service - Service im Zusammenhang mit dem Hafen
* Transport --- Name des Transport-Protokoll zu verwenden ( "tcp" oder "udp")
* /
(
struct hostent * phe; / * Zeiger auf die Host-Informationen Eintrag * /
struct Servent * PSE; / * Zeiger auf die Service-Informationen Eintrag * /
struct protoent * PSA; / * Zeiger auf die Einreise-Protokoll-Informationen * /
struct sockaddr_in Sünde; / * eine Internet-Endpunkt addredd * /
int s, Typ; / * Sockel Schlagwort und Sockel-Typ * /

memset (& sin, 0, sizeof (sin));
sin.sin_family \u003d AF_INET;

/ * Map-Service-Name, um Port-Nummer * /
if (PSE \u003d getservbyname (Service-, Transport))
sin.sin_port \u003d PSE-> s_port;
else if ((sin.sin_port htons \u003d ((u_short) atoi (Service))) \u003d\u003d 0)
(
/ / errexit ( "Can't get \"% s \ "Service-Eintrag \ n", service);
printf ( "Can't get \"% s \ "Service-Eintrag \ n", service);
return 0;
)

/ * Karte Host-Namen zu IP-Adresse, so dass für dotted decimal * /
if (phe \u003d gethostbyname (host))
memcpy (& sin.sin_addr, phe-> h_addr, phe-> h_length);
else if ((sin.sin_addr.s_addr \u003d inet_addr (Host)) \u003d\u003d INADDR_NONE)
(
/ / errexit ( "Can't get \"% s \ "Protokoll-Eintrag \ n", Transport);
printf ( "Can't get \"% s \ "Protokoll-Eintrag \ n", Transport);
return 0;
)

/ * Karte Transport-Protokoll Namen zu Protokoll Zahl * /
if ((PSA \u003d getprotobyname (Transport)) \u003d\u003d 0)
(
/ / errexit ( "Can't get \"% s \ "Protokoll-Eintrag \ n", Transport);
printf ( "Can't get \"% s \ "Protokoll-Eintrag \ n", Transport);
return 0;
)

/ * User-Protokoll, um eine Socket-Typ * /
if (strcmp (Verkehr, "udp") \u003d\u003d 0)
type \u003d SOCK_DGRAM;
sonst
type \u003d SOCK_STREAM;

/ * Allocate ein Socket * /
s \u003d socket (PF_INET, Typ, PPE-> p_proto);
if (n <0)
(
/ / errexit ( "Cannot create socket:% s \ n", strerror (errno));
printf ( "Cannot create socket:% s \ n", strerror (errno));
return 0;
)
/ * Schließen Sie das Socket * /
if (connect (s, (struct sockaddr *) & sin, sizeof (sin)) <0)
(
/ / errexit ( "kann keine Verbindung zu% s.% s:% s \ n", Host-, Service-, strerror (errno));
printf ( "kann keine Verbindung zu% s.% s:% s \ n", Host-, Service-, strerror (errno));
return 0;
)
return s;

)


int connectTCP (const char * host, const char * Service)
/ * Argumente:
* Host --- Name des Host, mit dem gewünschten Verbindung
* Service --- Dienstleistung im Zusammenhang mit dem Hafen
* /
(
Rückkehr connectsock (Host, Service, "tcp");
)




/ * Errexit --- Drucken ein Fehler mesage und Ausgang * /

/ * VARARGS1 * /

int errexit (const char * format ,...)
(
va_list args;
va_start (args, format);
vfprintf (stderr, format, args);
va_end (args);
exit (1);
)
  #7 (permalink)  
Old 01-16-2002
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix-Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9131
Re: Wie man eine Telnet-Client-Programm?

Zitat:
Zitat von thinker130
Hallo, Experten:
Ich habe programmiert eine einfache Telnet-Client in SCO UNIX 5.0.5, hat der Kunde an der ersten Möglichkeit gedacht Verhandlungen, aber ich kann keine Login-Prompt vom Server. Bitte helfen Sie mir.
Ich habe nicht die Zeit, um allen, die Debug-Code, den Sie auf dem Laufenden, aber ich habe herunterladen und ausprobieren.

Ich fand, dass, wenn ich den Dienst auf "tagsüber", es hat funktioniert! Die Tages-Service ist keine Option negiation an. , Der mit dem Finger auf die Option Verhandlungen. Ftp ist Teilmenge von telnet die Option Verhandlungen, so habe ich versucht die Einstellung zu "ftp" und dies auch nicht, aber Ihr Programm viel weniger Debug-Ausgabe.

Ich schlage vor, dass Sie den Service "ftp" und die Debug-Option, dass die Verhandlungen auf. Sobald Sie einen Login-Prompt von FTP können Sie dann versuchen telnet.
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 04:25 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0