#include "inet.h"
#include <iostream.h>

void main(int argc,char* argv[])
{

  int pn=-1;
  if(argc>1) pn=atoi(argv[1]);

  int sockfd;
  struct sockaddr_in servaddr,localAddr;
  char server[80];

  strcpy(server,(argc<3) ? SERV_HOST_ADDR : argv[2]);
  

  
  //bzero((char*)&servaddr,sizeof(servaddr));
  servaddr.sin_family=AF_INET;
  servaddr.sin_addr.s_addr=inet_addr((argc<3) ? SERV_HOST_ADDR : argv[2]);
  servaddr.sin_port=htons((pn==-1) ? SERV_TCP_PORT : pn);

  
  if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
  
   perror("socket error");


  
  printf("\nConnecting to %s",(argc<3) ? SERV_HOST_ADDR : argv[2]);
  if(connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
	  perror("can't connect to server");

  printf("\nConnected.\n\n");
  
  
   char sendline[2048],rline[2048+1];


   cout << server  << " : ";
   
  while(fgets(sendline,2048,stdin)!=NULL)
    {


      if(write(sockfd,sendline,strlen(sendline))==-1)
	perror(" write error on socket");
      
      if(strncmp(sendline,"exit",4)==0)
	{
	  close(sockfd);
	  exit(0);
	  
	}

      //   else
      //cout << "sent : " << sendline << endl << flush;

      int finish=0;
      rline[0]=0;
      char eof[2];
      eof[0]=26;
      eof[1]=0;
	while(!finish)
	{
	  int n=read(sockfd,rline,2048);
	  if(n==-1)
	    perror("read error");


      
	  rline[n]=0;
	      
	      if(strcmp(&rline[strlen(rline)-1],eof)==0)
		{
		  finish=1;
		  rline[strlen(rline)-1]=0;
		}
	      
	

	  
	  cout << rline << flush;

	 
	}
	 cout << server  << " : ";
	 
    }
  

  close(sockfd);
  
}

     




