poke.c (641B)
1 /* 2 simple port checking utility 3 */ 4 5 #include <u.h> 6 #include <libc.h> 7 8 void 9 usage(void) 10 { 11 fprint(2, "usage: %s addr1 [addr2 addr3 ...]\n", argv0); 12 exits("usage"); 13 }; 14 15 void 16 main(int argc, char **argv) 17 { 18 ARGBEGIN{ 19 default: 20 usage(); 21 }ARGEND 22 if (argc == 0) usage(); 23 24 char **addr = malloc(sizeof(char *) * argc); 25 int i; 26 for (i = 0; i < argc; i++) { 27 addr[i] = netmkaddr(argv[i], "tcp", "echo"); 28 if (addr[i] == nil) sysfatal("failed at %s, %r", argv[i]); 29 } 30 for (i = 0; i < argc; i++) { 31 int d = dial(addr[i], nil, nil, nil); 32 if (d > 0) { 33 close(d); 34 print("%s open\n", addr[i]); 35 } else print("%s closed\n", addr[i]); 36 } 37 }