version 1.1, 2011/03/16 18:37:15
|
version 1.2, 2011/05/29 22:49:25
|
Line 0
|
Line 1
|
|
#include <stdio.h> |
|
#include <string.h> |
|
#include <sys/socket.h> |
|
#include <sys/select.h> |
|
#include <sys/filio.h> |
|
#include <netinet/in.h> |
|
#include <arpa/inet.h> |
|
#include <arpa/telnet.h> |
|
#include <aitcli.h> |
|
|
|
|
|
int main(int argc, char **argv) |
|
{ |
|
int ret, s, c; |
|
struct sockaddr_in sin = { sizeof sin, AF_INET, htons(2000), .sin_addr.s_addr = 0x100007f }; |
|
struct telnetAttrs *a, A[2]; |
|
char str[256], code; |
|
|
|
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); |
|
bind(s, (struct sockaddr*) &sin, sizeof sin); |
|
listen(s, 1); |
|
c = accept(s, (struct sockaddr*) &sin, (socklen_t*) &ret); |
|
|
|
cli_telnet_SetCmd(&A[0], DO, TELOPT_TTYPE); |
|
if (argc > 1) { |
|
cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0); |
|
cli_telnet_DumpAttrs(A, 2); |
|
printf("cli_telnetSend()=%d bytes\n", cli_telnetSend(c, &A[0], 1, NULL, 0, 1)); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
free(a); |
|
|
|
printf("str=%s\n", str); |
|
|
|
printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, "brym\n", 5, 0)); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
ret = 255; |
|
printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret)); |
|
free(a); |
|
} else { |
|
cli_telnet_SetCmd(&A[1], GA, 0); |
|
cli_telnet_DumpAttrs(A, 2); |
|
|
|
char caps[] = { TELOPT_BINARY, TELOPT_TTYPE, TELOPT_STATUS }; |
|
printf("a=%p ret=%d telnet_Answer()=%d\n", a, ret, cli_telnet_Answer(caps, sizeof caps, A, 2, &a, &ret)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
free(a); |
|
|
|
printf("telnetSend()=%d bytes\n", cli_telnetSend(c, A, 2, "piuk\n", 5, 0)); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
free(a); |
|
|
|
printf("str=%s\n", str); |
|
|
|
cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0); |
|
printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, NULL, 0, 1)); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
printf("str=%s\n", str); |
|
ret = 255; |
|
printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret)); |
|
free(a); |
|
|
|
printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
free(a); |
|
|
|
printf("str=%s\n", str); |
|
|
|
printf("telnetSend()=%d bytes\n", cli_telnetSend(c, NULL, 0, "ALA-BALA\n", 9, 0)); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, NULL, NULL, str, 255)); |
|
free(a); |
|
printf("str=%s\n", str); |
|
printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), |
|
ret, cli_telnetRecv(c, &a, &ret, str, 255)); |
|
cli_telnet_DumpAttrs(a, ret); |
|
free(a); |
|
|
|
printf("str=%s\n", str); |
|
} |
|
|
|
close(c); |
|
close(s); |
|
return 0; |
|
} |