Index: benchmark/io/sendfile/consumer.c
===================================================================
--- benchmark/io/sendfile/consumer.c	(revision 8761d40a52a968eac13a3bc2545622386e7a958a)
+++ benchmark/io/sendfile/consumer.c	(revision da81b849ae2b320b5a4c2cef64756a4105b72ed9)
@@ -37,6 +37,17 @@
 	case 1: break;
 	case 2:
+		{
+			const char * const str = argv[1];
+			char* endptr;
+			unsigned long long ret = strtoul(str, &endptr, 10);
+			if('\0' != *endptr) { fprintf( stderr, "Invalid argument \"%s\" (not a number)\n", str ); goto USAGE;}
+			if(errno == ERANGE || ret > 65535)  { fprintf( stderr, "Invalid argument \"%s\" (value too large)\n", str ); goto USAGE;}
+
+			port = ret;
+			break;
+		}
+	USAGE:
 	default:
-		fprintf( stderr, "USAGE: %s [port]", argv[0] );
+		fprintf( stderr, "USAGE: %s [port]\n", argv[0] );
 		exit( USAGE_ERROR );
 	}
