被动式Telnet研究及实现(解决内外网远程维护的困难)-part B
来源:互联网 发布:有毒网络剧有第二季吗 编辑:程序博客网 时间:2024/06/05 13:25
欢迎转载,转载请保留原文链接:http://blog.csdn.net/mikulee/article/details/40150791
上一篇文章实现了被动式Telnet的后台端口数据转接功能。
接着实现定制的telnet客户端。
首先下载netkit实现的telnet源码:http://ftp.de.debian.org/debian/pool/main/n/netkit-telnet/netkit-telnet_0.17.orig.tar.gz
里面包含telnet客户端及服务端的实现,而我们仅仅需要的是客户端的源码。
经过一些简单的提取与修复,telnet客户端即可编译及运行。下面我们将telnet客户端修改成监听某个端口,等待客户端请求,以便真正实现telnet通讯。
首先修改程序入口,以便接收监听的端口这个参数。
代码略过。。
接着修改netlink.cc文件,将netlink.cc中的connect注释掉,改成以下函数,并修改对应头文件。
<span style="font-size:14px;">int netlink::listenPort(int debug, int port){struct sockaddr_in server_addr;struct sockaddr_in client_addr;if ((psocket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {fprintf(stderr, "Socket Error\n");return 0;}// fill in server address structbzero(&server_addr, sizeof(struct sockaddr_in));server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htonl(INADDR_ANY);server_addr.sin_port = htons(port);int opt;//setsockopt(psocket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));if (bind(psocket, (struct sockaddr *) (&server_addr),sizeof(struct sockaddr)) == -1) {fprintf(stderr, "Bind error,no:%d\n",errno);exit(1);}if (listen(psocket, 1) == -1) {fprintf(stderr, "listen error\n");exit(1);}fprintf(stderr, "waitting for connection...\n");int sin_size= sizeof(struct sockaddr_in);if ((net = accept(psocket, (struct sockaddr *) (&client_addr),(socklen_t *)&sin_size)) == -1) {fprintf(stderr, "Accrpt error\n");return 0;}printf("Server get connection from %s,clientfd=%d\n",(unsigned char *) inet_ntoa(client_addr.sin_addr), net);return 2;}</span>
该程序启动以后,就会监听port端口,等等arm主机的连接到来。
下面说下该被动式Telnet的使用方法:
假设你编译的上面修改的客户端叫做:telnetPassive,arm主机上的叫做telnetPipe。
首先,用控制台运行telnetPassive,假设监听的端口是12345
./telnetPassive 12345
上篇文章已经说过将telnetPipe作为arm主机开机启动运行了。这里就不再说。
接着,我们自己的应用程序可以时刻的检测者web服务器端,等有需求的时候,自己的应用程序就可以通过socket发送数据“ip=服务器ip&port=服务器端口12345”到端口10109(这个端口是程序里设定的,可以在代码里自己修改)。接着telnetPipe就会为你完成一切,建立telnet连接。通过soket发送数据,网上一大堆代码教程。可以去搜一下。
接着送上我的源码,欢迎下载:
https://github.com/cat9/PassiveTelnet
- 被动式Telnet研究及实现(解决内外网远程维护的困难)-part B
- 被动式Telnet研究及实现(解决内外网远程维护的困难)-part A
- 通过telnet外网远程访问维护交换机
- 关于telnet协议的研究及应用
- 困难的A+B
- 远程控制的简单实现之TELNET
- 双网卡内外网问题的解决
- telnet实现远程连接
- 解决困难的方式
- Spring RMI远程调用时的内外网端口映射问题
- 内外网的安全隔离技术实现
- [困难的a+b]aplusb
- windows 2003 server的远程维护 windows 远程桌面,radmin,telnet 相关
- asp.net mvc利用knockoutjs实现登陆并记录用户的内外网IP及所在城市
- asp.net mvc利用knockoutjs实现登陆并记录用户的内外网IP及所在城市
- 关于telnet协议的研究及应用续
- 关于telnet协议的研究以及用java进行封装实现自己的telnet客户端
- 解决内外网切换问题
- 数据恢复过程中应该注意的一些问题
- XML语言与JSON语言的比较
- 关于“怎样修改CLSID,使改后的Activex控件和原版的Activex控件共存”
- UITableView学习笔记
- 静态链接库与动态链接库的优缺点
- 被动式Telnet研究及实现(解决内外网远程维护的困难)-part B
- 郁闷
- 配置probe来监控tomcat
- 接口
- 第八周项目四——个人所得税计算器
- 在linux终端删除系统应用APK
- Android 使用HttpUrlConnection处理请求
- POJ 1017 Packets
- 定期存款利息计算器