text: #include <stdio.h>
  #include <stdlib.h>
  #include <unistd.h>
  #include <string.h>
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netinet/in.h>
  #include <netdb.h>
  
  void error(const char *msg)
  {
      perror(msg);
      exit(0);
  }
  
  int main(int argc, char *argv[])
  {
      int sockfd, portno, n;
      struct sockaddr_in serv_addr;
      struct hostent *server;
      
      char buffer[256];
      if (argc < 3) {
          fprintf(stderr,"Uso: %s ip port\n", argv[0]);
          exit(0);
      }
      portno = atoi(argv[2]);
      sockfd = socket(AF_INET, SOCK_STREAM, 0);
      if (sockfd < 0)
          error("ERRO ao abrir socket");
      server = gethostbyname(argv[1]);
      if (server == NULL) {
          fprintf(stderr,"ERRO servidor indisponivel\n");
          exit(0);
      }
      bzero((char *) &serv_addr, sizeof(serv_addr));
      serv_addr.sin_family = AF_INET;
      bcopy((char *)server->h_addr,
            (char *)&serv_addr.sin_addr.s_addr,
            server->h_length);
      serv_addr.sin_port = htons(portno);
      if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
          error("ERRO ao conectar");
      do {
          printf("Digite sua msg: ");
          bzero(buffer,256);
          fgets(buffer,255,stdin);
          n = write(sockfd,buffer,strlen(buffer)-1);
          if (n < 0)
              error("ERRO ao escrever no socket");
          bzero(buffer,256);
          n = read(sockfd,buffer,255);
          if (n < 0)
              error("ERRO ao ler do socket");
          printf("%s\n",buffer);
      } while (strcmp("0", buffer) != 0);
      printf("Parando o programa\n");
      close(sockfd);
      return 0;
  }