#include "inet.h"
void main(int argc,char* argv[])
{

  int pn=-1;
  if(argc>1)
    
    pn=atoi(argv[1]);
  
  int sfd;
  struct sockaddr_in cli_addr,ser_addr;

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

  if( (sfd = socket(AF_INET,SOCK_DGRAM,0))<0)
    perror("socket fails");
  bzero((char*)&cli_addr,sizeof(cli_addr));

  cli_addr.sin_family = AF_INET;
  cli_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  cli_addr.sin_port = htons(0);

  if(bind(sfd,(struct sockaddr*)&cli_addr,sizeof(cli_addr))<0)
    perror("can't bind");


  /*
  char msg[]="Hello World ! XXX";
  
  int m_len=strlen(msg);
  struct sockaddr* sa =  (struct sockaddr * ) &ser_addr;
  if(sendto(sfd,msg,m_len,0,(struct sockaddr * )&ser_addr,sizeof(ser_addr))==-1)
    perror("send err");
  char rec_buf[100];
  
  int n = recvfrom(sfd,rec_buf,100,0,(struct sockaddr*) 0, (socklen_t *)0);
  if(n<0) perror("Err rec");
  rec_buf[n]=0;
  cout<<rec_buf<<endl;
  */



  
   char sendline[2048],rline[2048+1];
  
  while(fgets(sendline,2048,stdin)!=NULL)
    {
   
      
      int m_len=strlen(sendline);
	struct sockaddr* sa =  (struct sockaddr * ) &ser_addr;
	if(sendto(sfd,sendline,m_len,0,(struct sockaddr * )&ser_addr,sizeof(ser_addr))==-1)
	  perror("send err");

	int n = recvfrom(sfd,rline,100,0,(struct sockaddr*) 0, (socklen_t *)0);
	if(n<0) perror("Err rec");
	rline[n]=0;
	cout<<rline<<endl;
	
	
   
    }

  
  close(sfd);
}











