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); }
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; }
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; }
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; }
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"); } } }