#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


int	Connect()
{
  int	SocketNumber;		/* Socket descripter */
  int port_num=0;
  char address[256];
  struct	sockaddr_in	sin;	/* Socket Entry */

  printf("Input address : ");
  gets(address);//スキャンしたい端末のアドレスを入力
  printf("\n");

  for(port_num=0; port_num<1024; port_num++){

    if(0 > (SocketNumber = (socket(AF_INET,SOCK_STREAM,0))))
	{
	    printf("\7Cannot get Socket.\n");
	    exit(1);
	}

    /* Set protocol family name */
    sin.sin_family = AF_INET;


    /* Set Port N.o. */
    sin.sin_port = htons(port_num);
    sin.sin_addr.s_addr = inet_addr(address);

	    if(0 > connect(SocketNumber,(struct sockaddr *)(&sin),sizeof(sin))){
			//printf("Port number = %d : don't use\n",port_num);
			//未使用の場合は表示しない。
	    }
	    else{
			printf("Port number = %d : use\n",port_num);
			//使用している場合は表示する。
	    }
	    close(SocketNumber);
    }

  return SocketNumber;
}

int	main(int argc, char *argv)
{
int	Sock;

Sock = Connect(argv[1]);	/* Connect */


printf("\nPort Scan end\n");

printf("Disocnnected.\n");
}