![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Magas szintű Programozás Post kérdések C, C + +, Java, SQL, és más programozási nyelvek itt. |
Több, UNIX és Linux fórum témák Ön által talált Hasznos
|
||||
| Szál | Thread Starter | Fórum | Válaszok | Utolsó hozzászólás |
| akarok UDP Vendégek fogadása program | Nirmala | IP Networking | 1 | 06-10-2005 04:46 PM |
| IP-címét, Telnet ügyfél | vtran4270 | A UNIX a dummies Kérdések és válaszok | 1 | 09-12-2002 05:34 PM |
| Tárgytalan Telnet ügyfél könyvtár létezik? | aho | Magas szintű Programozás | 0 | 09-11-2002 09:45 AM |
| Telnet kliens IP-meghatározás | thomas.jones | Magas szintű Programozás | 0 | 08-08-2002 07:17 PM |
| Using Telnet ügyfél MacOSX a parancssori terminál | tylerl | A UNIX a dummies Kérdések és válaszok | 2 | 07-15-2001 11:05 AM |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma |
Értékelés:
|
Megjelenítési módok |
|
|
|
||||
|
Hogyan Telnet kliens program?
Szia, Szakértők:
Nekem van programozva egy egyszerű telnet ügyfelet a SCO Unix 5.0.5, az ügyfél letette hittem, hogy a választás első tárgyalás, de nem fogadhatom gyors belépés a szerverről. kérem, segítsen nekem. |
|
||||
|
Jelölje be ezt a http://jos.sweetcherrie.com/src/telnet.c.html
|
|
||||
|
a forrás fájl (első fele)
Azt követően a forrás fájlokat belows, amelyek magukban foglalják tel_cli.c és tel_cli.h. Tud akárki mondja meg hogyan tudok bejelentkezési jelszó azonnali és gyors a távoli host?
tel_cli.c: / / Név: tel_cli.c / / Szerző: Robert / / Date: Jan 03 2002 ---? / / Called: Ez a modul egy része <<Traffic Data Management>> alkalmazást. / / Cél: Használt bejelentkezni a távoli gépre és futtasd a parancsot a távoli gépen. / / Formátum: tel_cli $ 1 / / Input: $ 1 a hostname a távoli gép, config-ban a helyi / etc / hosts fájlba. / / Példa: tel_cli 134.132.5.11 vagy tel_cli lyts1 / / Return: nincs # 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 / / Az építészeti és konstrukciós közé id opciót, az opció neve és opció zászló, a zászló jelzi, / / Ha az ügyfél választ a lehetőséget, igen vagy nem, zászló \u003d\u003d 1 azt jelenti, hogy igen. struct OptionFlag ( int Id; char * neve; int flag; ); struct OptionFlag struOptionFlag [40]; int kinnlakó kórházi errno; create_server int (int port); int create_ftp_cli (const char * host, const char * szolgáltatás); get_reply int (int sock); get_ts int (int sock); int connectTCP (const char * host, const char * szolgáltatás); int errexit (const char * format ,...); void sigroutine (int unused); int ser_sock / / a szerver foglalat várja az FTP szerverre való csatlakozáshoz, és elfogadja azokat a data_sock. data_sock int \u003d 0; / / az aljzat fogadására és küldésére adatfájl. int ctrl_sock; int para [7]; char * gs_filename / / fájl neve van szükségünk char * gs_omc_passwd; int g_iFileLen / / hossza fájl g_iReceivedLen int \u003d 0; / / a byte érkezett unsigned char gsSendMsg [LINELEN]; unsigned char gsReceiveMsg [LINELEN]; fd_set all_fds; / / Main haladás szerint a számos paraméter, az alkalmazás dönti el, mi a teendő. int main (int argc, char * argv []) ( char * host \u003d "lyts1" / / host használni, ha egyik sem szolgáltatott char * szolgáltató \u003d "telnet" / / default szolgáltatás neve switch (argc) ( case 1: printf ( "Használat: getFile [ÉÉHHNN front-name] \ n"); exit (1); case 3: / / szolgáltatás \u003d argv [2]; printf ( "Használat: getFile [ÉÉHHNN front-name] \ n"); case 2: host \u003d argv [1]; / / gs_omc_passwd \u003d argv [2]; / / gs_filename \u003d argv [3]; break; alapértelmezett: fprintf (stderr, "Használat: getFile [első ÉÉHHNN-name] \ n"); exit (1); ) FD_ZERO (& all_fds); ctrl_sock \u003d create_telnet_cli (host, szolgáltatás); FD_SET (ctrl_sock, & all_fds); printf ( "ctrl_sock:% d \ n", ctrl_sock); / / send_command (ctrl_sock); exit (0); ) / / Designer: Robert / / Date: Jan 03 2002 ---? / / Called: Ez a modul neve a fő folyamat. / / Cél: Used to create a socket csatlakozik a megadott fogadó, majd kommunikálni a fogadó, hogy a lehetőségek, / / Küldés felhasználói nevet és jelszót a befogadó, vissza sock_id. / / Input: $ 1 (char * host): a gép neve a távoli gépen. / / $ 2 (char * szolgáltatás): a szolgáltatás típusát, amelyet a távoli gépen, config-ban a helyi / etc / services fájlban. / / Return: li_sock int create_telnet_cli (const char * host, const char * szolgáltatás) ( unsigned char rbuf [LINELEN]; / / puffer egy sor szöveget unsigned char wbuf [LINELEN]; / / puffer egy sor szöveget unsigned char msg [LINELEN]; unsigned char ch; unsigned char lcOption; int li_sock, li_count / / li_socket leíró, olvassa el gróf int outchars, inchars / / karaktereket a küldött és fogadott int i; printf ( "belépő telnet_cli \ n"); li_sock \u003d connectTCP (host, szolgáltatás); printf ( "li_socket:% 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 ( "hossz:% d,% s \ n", li_count, rbuf); / / sleep (5); if (li_count \u003d\u003d 0) ( printf ( "socket van zárva! \ n"); exit (1); ) / / Ha li_count> 0, az azt jelenti, hogy a foglalat kapott néhány karaktert a szerver for (i \u003d 0; i <\u003d li_count - 1;) ( printf ( "rbuf [% d]:% d \ n", i, rbuf [i]); / / sleep (2); / / ch \u003d rbuf [i]; / / printf ( "% c \ n", ch); if (rbuf [i] \u003d\u003d IAC) ( / / printf ( "rbuf [% d] az 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) ( DODO esetén: if (lcOption \u003d\u003d AUTH) ( printf ( "RECV DO hitelesítés (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) / / a legfontosabb, hogy megtaláljuk SB szintaxis. 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 RÉGI DO-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"); alvás (5); bzero (gsSendMsg, LINELEN); sprintf (gsSendMsg, "% c% c% c \ n", IAC, WONT, ECHO_ON); write (li_sock, gsSendMsg, strlen (gsSendMsg)); ) break; ügyben DONT: printf ( "ch van DONT \ n"); break; ügyet: if (lcOption \u003d\u003d ECHO_ON) ( printf ( "RECV LESZ ECHO (1) \ n"); alvás (5); bzero (gsSendMsg, LINELEN); sprintf (gsSendMsg, "% c% c% c \ n", IAC, DODO, ECHO_ON); write (li_sock, gsSendMsg, strlen (gsSendMsg)); ) break; |
|
||||
|
a forrás fájl (második felében tel_cli.c és tel_cli.h)
esetben WONT:
break; esetben SB: printf ( "ch az SB \ n"); alvás (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; alvás (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 KÜLD (39) \ n"); printf ( "% d% d% d \ n", rbuf [i], rbuf [i + 1], rbuf [i + 2]); / / i \u003d i + 3; alvás (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 terminál) ( printf ( "RECV IAC SB Terminal Type KÜLD (24) \ n"); printf ( "% d% d% d \ n", rbuf [i], rbuf [i + 1], rbuf [i + 2]); / / i \u003d i + 3; alvás (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; alapértelmezett: printf ( "ch van más karakter \ n"); break; ) ) vagy ( / / printf ( "ch nem IAC, van talán néhány hiba fordul elő! \ n"); i + +; ) ) ) ) tel_cli.h: / / telnet parancs kódja # define IAC 255 # define DODO 253 # define DONT 254 # define FOG 251 # define WONT 252 # define SB 250 # define SE 240 # define IS "0" # define SEND "1" # define INFO "2" # define VAR "0" # define ÉRTÉK "1" # define ESC "2" # define USERVAR "3" / / option név és id # define ECHO_ON 1 # define GO_AHEAD 3 # define STATUS 5 # define TIMER 6 # define TERMINAL 24 # define NAWS 31 # define TSPEED 32 # define FLOW 33 # define LINEMODE 34 # define XDISPLOC 35 / / X Display Location # define OLD_ENVIRON 36 / / Régi - Környezeti változók # define AUTH 37 # define NEW_ENVIRON 39 |
|
||||
|
a forrás fájlokat (a harmadik rész)
El is felejtettem, hogy egyes funkciók közé tartozik a file-ban szükség tel_cli.c, kérjük, csatolja a belowed forráskódot, hogy a végén fájl tel_cli.c.
/ * connectsock - lefoglalni & connect a socket TCP vagy a TCP * / int connectsock (const char * host, const char * szolgáltatás, const char * szállítás) / * Érvek: * Host név --- A fogadó, amely a kívánt kapcsolat * Szolgáltatás - szolgáltatás jár a kívánt portot * Közlekedési --- szállítóhajó neve protokoll használata ( "tcp" vagy "udp") * / ( struct hostent * phe; / * pointer a befogadó információs entry * / struct servent * PSE; / * mutató a szolgáltatási információt belépési * / struct protoent * PPE; / * mutató a protokoll információk belépési * / struct sockaddr_in bűn; / * internet végpont addredd * / int s, típus; / * socket leíró csatlakozó típus * / memset (& sin, 0, sizeof (sin)); sin.sin_family \u003d AF_INET; / * Map szolgáltatás neve a port száma * / if (PSE \u003d getservbyname (szolgáltatás, közlekedés)) sin.sin_port \u003d PSE-> s_port; else if ((sin.sin_port \u003d htons ((u_short) atoi (szolgáltatás))) \u003d\u003d 0) ( / / errexit ( "cannot get \"% s \ "service entry \ n", service); printf ( "cannot get \"% s \ "service entry \ n", service); return 0; ) / * Host név Map IP-címét, amely lehetővé teszi a decimális * / 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 ( "cannot get \"% s \ "protokoll bejegyzés \ n", közlekedés); printf ( "cannot get \"% s \ "protokoll bejegyzés \ n", közlekedés); return 0; ) / * Map szállítási protokoll neve a protokoll szám * / if ((PPE \u003d getprotobyname (közlekedés)) \u003d\u003d 0) ( / / errexit ( "cannot get \"% s \ "protokoll bejegyzés \ n", közlekedés); printf ( "cannot get \"% s \ "protokoll bejegyzés \ n", közlekedés); return 0; ) / * User protokollt választani a socket típus * / if (strcmp (közlekedés, "udp") \u003d\u003d 0) type \u003d SOCK_DGRAM; vagy type \u003d SOCK_STREAM; / * Allocate a socket * / s \u003d socket (PF_INET, típus, PPE-> p_proto); if (s <0) ( / / errexit ( "nem lehet létrehozni a socket:% s \ n", strerror (errno)); printf ( "cannot create socket:% s \ n", strerror (errno)); return 0; ) / * Connect a socket * / if (connect (s, (struct sockaddr *) & sin, sizeof (sin)) <0) ( / / errexit ( "nem tud kapcsolódni ehhez:% s.% s:% s \ n", host, szerviz, strerror (errno)); printf ( "nem tud kapcsolódni ehhez:% s.% s:% s \ n", host, szerviz, strerror (errno)); return 0; ) return s; ) int connectTCP (const char * host, const char * szolgáltatás) / * Érvek: * Host név --- A fogadó, amely a kívánt kapcsolat * --- Service szolgáltatás jár a kívánt portot * / ( return connectsock (host, service, "tcp"); ) / * --- Errexit nyomtatási hiba Bejegyzés és kilép * / / * VARARGS1 * / int errexit (const char * format ,...) ( va_list args; va_start (args, format); vfprintf (stderr, format, args); va_end (args); exit (1); ) |
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|