tcpprobe.c
上传用户:jxr_002
上传日期:2007-01-05
资源大小:12k
文件大小:1k
- /* -*-C-*- tcpprobe.c */
- /* tcpprobe - report on which tcp ports accept connections */
- /* IO ERROR, error@axs.net, Sep 15, 1995 */
- #include <stdio.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <errno.h>
- #include <netdb.h>
- #include <signal.h>
- int main(int argc, char **argv)
- {
- int probeport = 0;
- struct hostent *host;
- int err, i, net;
- struct sockaddr_in sa;
- if (argc != 2) {
- printf("Usage: %s hostnamen", argv[0]);
- exit(1);
- }
- for (i = 1; i < 1024; i++) {
- strncpy((char *)&sa, "", sizeof sa);
- sa.sin_family = AF_INET;
- if (isdigit(*argv[1]))
- sa.sin_addr.s_addr = inet_addr(argv[1]);
- else if ((host = gethostbyname(argv[1])) != 0)
- strncpy((char *)&sa.sin_addr, (char *)host->h_addr, sizeof sa.sin_addr);
- else {
- herror(argv[1]);
- exit(2);
- }
- sa.sin_port = htons(i);
- net = socket(AF_INET, SOCK_STREAM, 0);
- if (net < 0) {
- perror("nsocket");
- exit(2);
- }
- err = connect(net, (struct sockaddr *) &sa, sizeof sa);
- if (err < 0) {
- printf("%s %-5d %sr", argv[1], i, strerror(errno));
- fflush(stdout);
- } else {
- printf("%s %-5d accepted. n", argv[1], i);
- if (shutdown(net, 2) < 0) {
- perror("nshutdown");
- exit(2);
- }
- }
- close(net);
- }
- printf(" r");
- fflush(stdout);
- return (0);
- }