📄 getports.c
字号:
// not done yet, not used.#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <time.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>int getports(char *ip, struct portscan_ *ports){ struct sockaddr_in addr[ports->numports]; // set up sockets and address struct's for each port to scan. // remember to add the new structure members in multiscan.c int sockets[ports->numports], count; for(count = ports->numports; count > 0; count--) { sockets[count] = socket(AF_INET, SOCK_STREAM, 0); addr[count].sin_family = AF_INET; addr[count].sin_port = htons(ports.ports[count]); addr[count].sin_addr = inet_addr(ip); }connect_nonb(int sockfd, struct sockaddr *saptr, int salen, int nsec){ int flags, n, error; int len; fd_set rset, wset; struct timeval tval; flags = fcntl(sockfd, F_GETFL, 0); fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); error = 0; if ( (n = connect(sockfd, (struct sockaddr *)saptr, salen)) < 0) if (errno != EINPROGRESS) return( -1 ); if ( n == 0 ) goto done; FD_ZERO(&rset); FD_SET(sockfd, &rset); wset = rset; tval.tv_sex = nsec; tval.tv_usec = 0; if ( (n = select(sockfd + 1, &rset, &wset, NULL, nsec ? &tval : NULL)) == 0) { close(sockfd); errno = ETIMEDOUT; return (-1); } if ( FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) { len = sizeof(error); if(getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) return ( -1 ); } else printf(" select error: sockfd not set\n"); done: fcntl(sockfd, F_SETFL, flags); if( error ) { close(sockfd); errno = error; return ( -1 ); } return(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -