File:  [ELWIX - Embedded LightWeight unIX -] / libaitcli / example / tnet.c
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Sun May 29 22:49:25 2011 UTC (13 years, 1 month ago) by misho
Branches: MAIN
CVS tags: cli3_3, cli3_2, cli3_1, cli3_0, cli2_3, cli2_2, HEAD, CLI3_2, CLI3_1, CLI3_0, CLI2_3, CLI2_2, CLI2_1
2.1

    1: #include <stdio.h>
    2: #include <string.h>
    3: #include <sys/socket.h>
    4: #include <sys/select.h>
    5: #include <sys/filio.h>
    6: #include <netinet/in.h>
    7: #include <arpa/inet.h>
    8: #include <arpa/telnet.h>
    9: #include <aitcli.h>
   10: 
   11: 
   12: int main(int argc, char **argv)
   13: {
   14: 	int ret, s, c;
   15: 	struct sockaddr_in sin = { sizeof sin, AF_INET, htons(2000), .sin_addr.s_addr = 0x100007f };
   16: 	struct telnetAttrs *a, A[2];
   17: 	char str[256], code;
   18: 
   19: 	s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
   20: 	bind(s, (struct sockaddr*) &sin, sizeof sin);
   21: 	listen(s, 1);
   22: 	c = accept(s, (struct sockaddr*) &sin, (socklen_t*) &ret);
   23: 
   24: 	cli_telnet_SetCmd(&A[0], DO, TELOPT_TTYPE);
   25: 	if (argc > 1) {
   26: 		cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0);
   27: 		cli_telnet_DumpAttrs(A, 2);
   28: 		printf("cli_telnetSend()=%d bytes\n", cli_telnetSend(c, &A[0], 1, NULL, 0, 1));
   29: 		printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), 
   30: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   31: 		cli_telnet_DumpAttrs(a, ret);
   32: 		free(a);
   33: 
   34: 		printf("str=%s\n", str);
   35: 
   36: 		printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, "brym\n", 5, 0));
   37: 		printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), 
   38: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   39: 		cli_telnet_DumpAttrs(a, ret);
   40: 		ret = 255;
   41: 		printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret));
   42: 		free(a);
   43: 	} else {
   44: 		cli_telnet_SetCmd(&A[1], GA, 0);
   45: 		cli_telnet_DumpAttrs(A, 2);
   46: 
   47: 		char caps[] = { TELOPT_BINARY, TELOPT_TTYPE, TELOPT_STATUS };
   48: 		printf("a=%p ret=%d telnet_Answer()=%d\n", a, ret, cli_telnet_Answer(caps, sizeof caps, A, 2, &a, &ret));
   49: 		cli_telnet_DumpAttrs(a, ret);
   50: 		free(a);
   51: 
   52: 		printf("telnetSend()=%d bytes\n", cli_telnetSend(c, A, 2, "piuk\n", 5, 0));
   53: 		printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
   54: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   55: 		cli_telnet_DumpAttrs(a, ret);
   56: 		free(a);
   57: 
   58: 		printf("str=%s\n", str);
   59: 
   60: 		cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0);
   61: 		printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, NULL, 0, 1));
   62: 		printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
   63: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   64: 		cli_telnet_DumpAttrs(a, ret);
   65: 		printf("str=%s\n", str);
   66: 		ret = 255;
   67: 		printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret));
   68: 		free(a);
   69: 
   70: 		printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
   71: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   72: 		cli_telnet_DumpAttrs(a, ret);
   73: 		free(a);
   74: 
   75: 		printf("str=%s\n", str);
   76: 
   77: 		printf("telnetSend()=%d bytes\n", cli_telnetSend(c, NULL, 0, "ALA-BALA\n", 9, 0));
   78: 		printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
   79: 				ret, cli_telnetRecv(c, NULL, NULL, str, 255));
   80: 		free(a);
   81: 		printf("str=%s\n", str);
   82: 		printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
   83: 				ret, cli_telnetRecv(c, &a, &ret, str, 255));
   84: 		cli_telnet_DumpAttrs(a, ret);
   85: 		free(a);
   86: 
   87: 		printf("str=%s\n", str);
   88: 	}
   89: 
   90: 	close(c);
   91: 	close(s);
   92: 	return 0;
   93: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>