/*** TCP Client ***/

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.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");
}