Beispiel #1
0
int send_and_recv_msgs(struct nl_msg *msg,
                              int (*valid_handler)(struct nl_msg *, void *),
                              void *valid_data)
{
        return send_and_recv(nlcfg.nl_sock, msg, valid_handler,
                             valid_data);
}
Beispiel #2
0
int main(int argc, char **argv)
{
	int  socketFD;
	int  sockaddr_size;
	struct sockaddr_in srv_socket_addr;

	char            ipaddr[16] = {0};
	unsigned short  port       = 0;

	if( 3>argc ){
#if defined(FEATURE_SOCKET_ONE_ADDRESS)
		strncpy(ipaddr, SERVER_ADDRESS,16);
#elif defined(FEATURE_SOCKET_NO_ADDRESS)
		strncpy(ipaddr, LOCAL_ADDRESS, 16);
#elif defined(FEATURE_SOCKET_ANY_ADDRESS)
		strncpy(ipaddr, ANY_ADDRESS,   16);
#endif
		port = SERVER_PORT;
	}else{
		if(argv[1]){
			printf("argv[1]=%s\n", argv[1]);
			strncpy(ipaddr, argv[1] ,16);
		}

		if(argv[2]){
			printf("argv[2]=%s\n", argv[2]);
			port=(unsigned short)atoi(argv[2]);
		}
	}

	printf( "ipaddr=%s port=%d\n", ipaddr, port );

	/* socket  */
	socketFD = socket(PF_INET, SOCK_STREAM, 0);
	if( socketFD < 0 ){
		perror("socket");
		exit(EXIT_FAILURE);
	}

	/* bind */
	srv_socket_addr.sin_family = PF_INET;								/* sin_family */
	if( 0==strncmp(ipaddr,"0.0.0.0", 16) ){
		srv_socket_addr.sin_addr.s_addr   = htonl( INADDR_ANY );	/* sin_addr   */
	}else{
		inet_aton( ipaddr, &(srv_socket_addr.sin_addr) );			/* sin_addr   */
	}
	srv_socket_addr.sin_port   = htons( (unsigned short)port );		/* sin_port   */
	sockaddr_size = sizeof(struct sockaddr_in);
	if( connect(socketFD, (struct sockaddr *)&srv_socket_addr, sockaddr_size ) < 0){
		perror("connect");
		exit(EXIT_FAILURE);
	}

	send_and_recv(socketFD);

	close(socketFD);
	return 0;
}
Beispiel #3
0
int main(int argc, char **argv)
{ /* argv[1] is a domain name */
char **pp;
/* or dotted decimal IP addr */
struct in_addr addr;
struct hostent *hostp;
int sockfd;
struct sockaddr_in serv_socket;
int port = 80;
char ip[] = "220.181.6.175"; //ip地址,可以通过gethostbyname来获取
char file_loc[] = "/home/HH/cape/http/temp.html"; //下载的存放位置
char *body=(char*)malloc(400*1024*sizeof(char));

bzero(&serv_socket, sizeof(struct sockaddr_in));
serv_socket.sin_family = AF_INET;
serv_socket.sin_port = htons(port);
inet_pton(AF_INET, ip, &serv_socket.sin_addr);

sockfd = socket(AF_INET, SOCK_STREAM, 0); 

/*if (inet_aton(argv[1], &addr) != 0)
hostp = gethostbyaddr((const char *)&addr, sizeof(addr),AF_INET);
else
hostp = gethostbyname(argv[1]);
printf("official hostname: %s\n", hostp->h_name);
for (pp = hostp->h_aliases; *pp != NULL; pp++)
printf("alias: %s\n", *pp);
for (pp = hostp->h_addr_list; *pp != NULL; pp++) {
addr.s_addr = ((struct in_addr *)*pp)->s_addr;
printf("address: %s\n", inet_ntoa(addr));
}*/

int flag = connect(sockfd, (struct sockaddr *)&serv_socket, sizeof(serv_socket)); //建立和HTTP服务器的TCP链接
if(flag < 0)
{
	printf("connect error!!! flag = %d\n", flag);
      exit(1);
}

send_and_recv(sockfd, "http://www.baidu.com/", "GET", "html/text", ip, port, file_loc, body, "Close"); //下载的主体函数

close(sockfd);

return 0;
}
Beispiel #4
0
int main(int argc, char** argv) {
	int clientfd, port;
	char *hostname;

	if (argc != 3) {
		printf("Usage: %s hostname/ip port\n", argv[0]);
		return EXIT_FAILURE;
	}

	hostname = argv[1];
	port = atoi(argv[2]);
	if ((clientfd = open_clientfd(hostname, port)) < 0) {
		return EXIT_FAILURE;
	}

	send_and_recv(clientfd);

	close(clientfd);

	return EXIT_SUCCESS;
}
Beispiel #5
0
int main(int argc, char *argv[])
{
	int opt;

	while ((opt = getopt(argc, argv, PARAMS)) != -1) {
		switch (opt) {
			case 'h':
				fprintf(stdout, HELP, argv[0]);
				exit(EXIT_SUCCESS);
			default:
				fprintf(stderr, USAGE, argv[0]);
				exit(EXIT_FAILURE);
		}
	}

	if (optind >= argc - 3) {
		fprintf(stderr, USAGE, argv[0]);
		exit(EXIT_FAILURE);
	}

	pthread_create(&monthread, NULL, mon_run, NULL);

	ifacename = argv[optind];
	monifname = argv[optind+1];
	ssid = argv[optind+2];
	int chan = atoi(argv[optind+3]);

	struct ifreq s;
	int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
	strcpy(s.ifr_name, ifacename);
	if (ioctl(fd, SIOCGIFHWADDR, &s)) {
		die("Unable to retrieve hardware address");
	}
	close(fd);
	memcpy(stamac, s.ifr_addr.sa_data, 6);

	int iface = if_nametoindex(ifacename);

	struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT);
	if(!cb)
		die("Can't allocate cb");
	struct nl_handle *handle;
	handle = nl_handle_alloc_cb(cb);
	if(!handle)
		die("Can't allocate handle");
	if(genl_connect(handle))
		die("Can't connect to generic netlink");

	if ((handle_id = genl_ctrl_resolve(handle, "nl80211")) < 0)
		die("Can't resolve generic netlink");
	
	usleep(100000);

	int ret;
	struct nl_msg* msg;
	do {
		msg = gen_msg(iface, ssid, chan);
		ret = send_and_recv(handle, msg, cb);
	}while(ret == DEVICE_BUSY);
	
	if (ret)
		printf("Sending failed %s\n", strerror(-ret));
	
	int ctr = 0;
	while(state != 2) {
		usleep(100);
		ctr++;
		if(ctr == 40000) {
			die("No probe response within timeout");
		}
	}

}