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, 2 months 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>