select实现telnet目标端口功能
来源:互联网 发布:秀才不出门便知天下事 编辑:程序博客网 时间:2024/06/05 00:27
vi interface_check.c
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netinet/ip.h> /* superset of previous */#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <sys/select.h>#include <time.h>#define INTF_NUM 5#define VAC_SOAP_IP "10.199.69.33"#define VAC_SOAP_PORT 9000#define VAC_ORDER_IP "10.199.69.12"#define VAC_ORDER_PORT 9999 #define SGIP_IP "10.199.70.151"#define SGIP_PORT 8881#define CMS_FTP_IP "10.199.76.12"#define CMS_FTP_PORT 21#define CONTENT_SYNC_TO_CMS_IP "10.199.76.14"#define CONTENT_SYNC_TO_CMS_PORT 8080int send_to_169(char *snd_buf_tmp) { int sd; int ret; struct sockaddr_in his_end; sd=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { fprintf(stderr,"send_to_169 socket() error.\n"); return -1; } his_end.sin_family=AF_INET; his_end.sin_port=htons(10010); his_end.sin_addr.s_addr=inet_addr("10.199.75.169"); ret=connect(sd,(struct sockaddr *)&his_end,sizeof(his_end)); if(ret==-1) { perror("send_to_169 connect()"); return -1; } ret=write(sd,snd_buf_tmp,strlen(snd_buf_tmp)); if(ret==-1) { fprintf(stderr,"send_to_169 write() error.\n"); return -1; } printf("client write %d bytes.\n",ret); ret=close(sd); if(ret==-1) { fprintf(stderr,"send_to_169 close() error.\n"); exit(-1); } return 0;}int main(void) { int sd; int ret; struct sockaddr_in his_end; int flags,flags1; int fdmax=0; fd_set rfds,wfds,exfds; struct timeval tv; int i; char snd_buf[1024];// char *ip[INTF_NUM]={"10.199.69.33","10.199.69.12","10.199.70.151","10.199.76.12","10.199.76.14"};// int port[INTF_NUM]={9000,9999,8881,21,8080};// char *ip[INTF_NUM]={VAC_SOAP_IP,VAC_ORDER_IP,SGIP_IP,CMS_FTP_IP,CONTENT_SYNC_TO_CMS_IP}; int port[INTF_NUM]={VAC_SOAP_PORT,VAC_ORDER_PORT,SGIP_PORT,CMS_FTP_PORT,CONTENT_SYNC_TO_CMS_PORT};//// char *ip[INTF_NUM]={VAC_SOAP_IP};// int port[INTF_NUM]={VAC_SOAP_PORT}; static char *ip_name[INTF_NUM]={"VAC_SOAP_IP","VAC_ORDER_IP","SGIP_IP","CMS_FTP_IP","CONTENT_SYNC_TO_CMS_IP"}; static char *port_name[INTF_NUM]={"VAC_SOAP_PORT","VAC_ORDER_PORT","SGIP_PORT","CMS_FTP_PORT","CONTENT_SYNC_TO_CMS_PORT"};// static char *ip_name[INTF_NUM]={"VAC_SOAP_IP"};// static char *port_name[INTF_NUM]={"VAC_SOAP_PORT"}; char nowtime[128]; char hname[128],hostname[128]; char *p,*h_name; time_t timep; struct tm *p1; timep=time(NULL); p1=localtime(&timep); snprintf(nowtime,128,"%d-%02d-%02d-%02d-%02d-%02d",1900+p1->tm_year,(1+p1->tm_mon),p1->tm_mday,p1->tm_hour,p1->tm_min,p1->tm_sec); ret=gethostname(hostname,sizeof(hostname)); if(ret==-1) { fprintf(stderr,"gethostname() error.\n"); exit(-1); } memset(hname,0,128); strcpy(hname,hostname); for(p=strtok(hname,"-");p;p=strtok(NULL,"-")) { h_name=p; }// printf("INTF_NUM=%d\n===================================\n",INTF_NUM); printf("%s\n",nowtime); printf("hostname=%s\n",hostname);// printf("hname=%s\n",str); for(i=0;i<INTF_NUM;i++) { memset(snd_buf,0,1024); sd=socket(PF_INET,SOCK_STREAM,0); if(sd==-1) { perror("socket()"); exit(-1); } flags=fcntl(sd,F_GETFL); if(flags==-1) { fprintf(stderr,"F_GETFL error.\n"); exit(-1); } // printf("F_GETFL flags=%d\n",flags); flags|=O_NONBLOCK; ret=fcntl(sd,F_SETFL,flags); if(ret==-1) { fprintf(stderr,"F_SETFL error.\n"); exit(-1); } // printf("F_SETFL flags=%d\n",flags); // printf("*******************\n"); // flags=fcntl(sd,F_GETFL); // printf("sd=%d,ip=%s,port=%d,flags=%d\n",sd,ip[i],port[i],flags); his_end.sin_family=AF_INET; his_end.sin_port=htons(port[i]); his_end.sin_addr.s_addr=inet_addr(ip[i]); ret=connect(sd,(struct sockaddr *)&his_end,sizeof(his_end)); // printf("sd=%d,ret=%d,err=%s\n",sd,ret,strerror(errno)); if(ret==0) { fprintf(stderr,"send_to_169 connect() ok.\n"); } else if(ret==-1 && errno==EINPROGRESS) { fdmax=sd; // fdmax=0; // printf("sd=%d\n",sd); FD_ZERO(&rfds); FD_ZERO(&wfds); FD_ZERO(&exfds); FD_SET(sd,&rfds); FD_SET(sd,&wfds); FD_SET(sd,&exfds); tv.tv_sec=2; tv.tv_usec=0; ret=select(fdmax+1,&rfds,&wfds,&exfds,&tv); printf("select ret=%d\n",ret); // if(ret>0) { if(ret==2 && FD_ISSET(sd,&rfds) && FD_ISSET(sd,&wfds)) { // fprintf(stderr,"select() ok, %s -> %s(%s):%s(%d) ok.\n",h_name,ip_name[i],ip[i],port_name[i],port[i]); printf("Connection refused\n"); snprintf(snd_buf,1024,"select() Connection refused, %s -> %s(%s):%s(%d).\n",h_name,ip_name[i],ip[i],port_name[i],port[i]); printf("%s",snd_buf); ret=send_to_169(snd_buf); if(ret==-1) { fprintf(stderr,"send_to_169() error.\n"); exit(-1); } } else if(ret==1 && FD_ISSET(sd,&wfds)) { printf("select() ok, %s -> %s(%s):%s(%d) ok.\n",h_name,ip_name[i],ip[i],port_name[i],port[i]); } else if(ret==0){ // fprintf(stderr,"select() timeout.\n"); printf("select() timeout.\n"); snprintf(snd_buf,1024,"select() timeout, %s -> %s(%s):%s(%d)\n",h_name,ip_name[i],ip[i],port_name[i],port[i]); printf("snd_buf=%s",snd_buf); ret=send_to_169(snd_buf); if(ret==-1) { fprintf(stderr,"send_to_169() error.\n"); exit(-1); } } else { // fprintf(stderr,"select() error.\n"); printf("select() error.\n"); snprintf(snd_buf,1024,"select() error, %s -> %s(%s):%s(%d)\n",h_name,ip_name[i],ip[i],port_name[i],port[i]); printf("snd_buf=%s",snd_buf); ret=send_to_169(snd_buf); if(ret==-1) { fprintf(stderr,"send_to_169() error.\n"); exit(-1); } } } /* ret=shutdown(sd,SHUT_RD); printf("shutdown ret=%d\n",ret); perror("shutdown()"); */ ret=close(sd); if(ret==-1) { fprintf(stderr,"close() error.\n"); exit(-1); } if(i!=4) { printf("-----------------------------------------\n"); sleep(2); } else { printf("-------------------------------------------------------------------------------\n\n"); } } // close(sd); exit(0);}
- select实现telnet目标端口功能
- arm目标板开启telnet功能
- C语言实现带自定义超时时间的telnet端口连通性检测功能
- C#Socket实现telnet功能
- RPC功能目标及实现
- C#使用TcpClient实现telnet功能
- C#使用TcpClient实现telnet功能
- 基于socket用java实现telnet功能
- 一组select实现多组select功能
- js实现select跳转功能
- 基于SSH端口转发实现telnet的安全传输
- 脚本实现telnet检测指定机器端口的连通性
- telnet 23端口
- telnet 访问80端口
- telnet学习 23端口
- telnet命令检测端口
- telnet测试对方端口
- linux打开telnet端口
- hdu2824筛选法欧拉函数+求和
- Android Activity 之间传递对象
- DBCC命令2:状态查询
- POJ 1039 Pipe (枚举,判线段相交)
- DBCC命令4:杂项
- select实现telnet目标端口功能
- 服务契约(双工契约的服务器与客户端实现案例)
- 二叉树的层序遍历
- 数据结构笔记一(20120818)
- Oralce SQL语言常用函数(一)字符函数
- log4j.properties配置详解
- iOS学习--详解UIView的 contentStretch属性
- com之代理(proxy)与存根(stub)
- WinCE中.def文件说明