Last active
November 14, 2015 18:33
-
-
Save jdhenke/73c0771f60ce99497919 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"flag" | |
"log" | |
"net" | |
) | |
const ( | |
defaultAddr = ":1234" | |
defaultNumTries = 4 | |
) | |
var ( | |
addr string | |
numTries int | |
) | |
func main() { | |
// use flags | |
flag.StringVar(&addr, "addr", defaultAddr, "address on which to listen") | |
flag.IntVar(&numTries, "n", defaultNumTries, "number of consecutive tries") | |
flag.Parse() | |
log.Printf("Using address=`%v`\n", addr) | |
log.Printf("Will try %v times\n", numTries) | |
// listen and close numTries times binding to addr | |
for i := 0; i < numTries; i++ { | |
listenAndClose(i) | |
} | |
// sweet, no issues. | |
log.Printf("PASS\n") | |
} | |
// listenAndClose creates a tcp listener on addr and closes it, logging its | |
// actions to and exiting the program in the event of an error. | |
func listenAndClose(i int) { | |
ln, err := net.Listen("tcp", addr) | |
if err != nil { | |
log.Fatalf("creating ln %v failed: %v\n", i, err) | |
} | |
log.Printf("%3d: listener created on %v\n", i, ln.Addr()) | |
if err := ln.Close(); err != nil { | |
log.Fatalf("closing ln %v failed: %v\n", i, err) | |
} | |
log.Printf("%3d: listener closed\n", i) | |
} |
Author
jdhenke
commented
Nov 14, 2015
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment