#!/usr/bin/python
# checks to see if a port is available,
# optionally binding to it for a length of time.
# uses TCP by default, or UDP if this script is named `bindudp'

import socket
import time
import sys, os

if len(sys.argv) == 1:
	print "Usage: %s <port> [<time>]" % sys.argv[0]
	sys.exit(0)

host = ''
port = int(sys.argv[1])
if len(sys.argv) > 2:
	wait = float(sys.argv[2])
else:
	wait = 0

if os.path.basename(sys.argv[0]) == "bindudp":
	type = socket.SOCK_DGRAM    # UDP
else:
	type = socket.SOCK_STREAM   # TCP

c = socket.socket(socket.AF_INET, type)
#c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
try:
	c.bind( (host, port) )
	#c.listen(1)
	if wait == 0:
		print "port " + str(port) + " is available"
	else:
		print "bound to port " + str(port)
except socket.error:
	print "port " + str(port) + " is being used"
	sys.exit(98)

if wait != 0:
	print "sleeping for " + str(wait) + " seconds"
	time.sleep(wait)

