⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpclient.c

📁 拥有分布式控制编程
💻 C
字号:
#include <sys/types.h>#include <sys/param.h>#include <netdb.h>#include "sig.h"#include "exit.h"#include "sgetopt.h"#include "uint16.h"#include "fmt.h"#include "scan.h"#include "str.h"#include "ip4.h"#include "uint16.h"#include "socket.h"#include "fd.h"#include "stralloc.h"#include "buffer.h"#include "error.h"#include "strerr.h"#include "pathexec.h"#include "timeoutconn.h"#include "remoteinfo.h"#include "dns.h"#include "tcp.h"#define FATAL "tcpclient: fatal: "#define CONNECT "tcpclient: unable to connect to "void nomem(void){  strerr_die2x(111,FATAL,"out of memory");}void usage(void){  strerr_die1x(100,"tcpclient: usage: tcpclient \[ -hHrRdDqQv ] \[ -i localip ] \[ -p localport ] \[ -T timeoutconn ] \[ -l localname ] \[ -t timeoutinfo ] \host port program");}int verbosity = 1;int flagdelay = 1;int flagremoteinfo = 1;int flagremotehost = 1;unsigned long itimeout = 26;unsigned long ctimeout[2] = { 2, 58 };char iplocal[4] = { 0,0,0,0 };uint16 portlocal = 0;char *forcelocal = 0;char ipremote[4];uint16 portremote;char *hostname;static stralloc addresses;static stralloc moreaddresses;static stralloc tmp;static stralloc fqdn;char strnum[FMT_ULONG];char ipstr[IP4_FMT];char seed[128];main(int argc,char **argv){  unsigned long u;  int opt;  char *x;  int j;  int s;  int cloop;  char controllerip;  unsigned long controllerport;  dns_random_init(seed);  close(6);  close(7);  sig_ignore(sig_pipe);   while ((opt = getopt(argc,argv,"dDvqQhHrRi:p:t:T:l:")) != opteof)  {  switch(opt) {      case 'd': flagdelay = 1; break;      case 'D': flagdelay = 0; break;      case 'v': verbosity = 2; break;      case 'q': verbosity = 0; break;      case 'Q': verbosity = 1; break;      case 'l': forcelocal = optarg; break;      case 'H': flagremotehost = 0; break;      case 'h': flagremotehost = 1; break;      case 'R': flagremoteinfo = 0; break;      case 'r': flagremoteinfo = 1; break;      case 't': scan_ulong(optarg,&itimeout); break;      case 'T': j = scan_ulong(optarg,&ctimeout[0]);			if (optarg[j] == '+') ++j;			scan_ulong(optarg + j,&ctimeout[1]);			break;      case 'i': if (!ip4_scan(optarg,iplocal)) usage(); break;      case 'p': scan_ulong(optarg,&u); printf("u is %d\n",u);portlocal = u; break;      default: usage();    }  }  //argv += optind;printf("u is %d,argv is %s\n",u,argv[optind]);printf("u is %d,argv is %s\n",u,argv[optind+1]);scan_ulong(argv[optind+1],&controllerport);   if (!verbosity)    buffer_2->fd = -1;char result[2000];CallController(1,argv[optind],controllerport,30,"whoami",result,1999); }int CallController(int CollID, char* CollIP, int CollPort, int timeoutinseconds, char * command ,void * result, int resultmaxlength){		int servfd=GetsocketAndConn(CollIP,CollPort,30);		if(servfd==-1)		return -1; char line[1024];			strcpy(line,command);		int strlength=strlen(line);		line[strlength]='\n';		line[strlength+1]='\0';		int ret=writen(servfd,line,strlen(line));		printf("in callcoll:%d\n",ret); char ResultfileName[1024]; snprintf(ResultfileName,4,"%03d",CollID); strcat(ResultfileName,"_result.txt");	 int nBytes;		FILE *fp;	fp=fopen(ResultfileName,"a"); while(readline(servfd,line,1023)) { 	 //printf("read line ret is : %s----\n",line); 	fprintf(fp,"%s",line); 	if(strcmp(line,"End\n")==0) 	{ 			printf("EndN\n");break; 	}  } fclose(fp);		}int GetsocketAndConn(char *ipaddr,int port,int timeout){	  struct sockaddr_in servaddr;	  struct sockaddr_in localaddr; 		struct hostent  *servhost = NULL; 		int servfd ;	  if(-1 == (servfd = socket(AF_INET, SOCK_STREAM, 0))) {		  myerror("tcpclient", "socket() error!\n");		  return -1;		 }		/*  if (NULL == (servhost = gethostbyname("192.168.6.66"))) {		  myerror("tcpclient", "Specified host not exist\n");		  return -1;		 }		 bzero(&localaddr, sizeof(localaddr));		 localaddr.sin_family = AF_INET;		 localaddr.sin_port = 0;		 localaddr.sin_addr = *(struct in_addr *)servhost->h_addr;		 int ret=bind (servfd, (struct sockaddr *)&localaddr, sizeof(servaddr));		 if(ret!=0)		 {printf("bind local addr error\n");}*/		 printf( "before gethostbyname(relay), ipaddr = %s\n" ,ipaddr);		 if (NULL == (servhost = gethostbyname(ipaddr))) {		  myerror("tcpclient", "Specified host not exist\n");		  return -1;		 }				 bzero(&servaddr, sizeof(servaddr));		 servaddr.sin_family = AF_INET;		 printf ("port is %d\n",port);		 servaddr.sin_port = htons(port);		 servaddr.sin_addr = *(struct in_addr *)servhost->h_addr;		 		 if (0 != connect(servfd, (struct sockaddr *)&servaddr, sizeof(servaddr))) {		  fprintf(stderr, "connect() error\n");		  return -1;		 }		 return servfd;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -