Annotation of libaitcli/example/tnet.c, revision 1.1.2.1
1.1.2.1 ! misho 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>