Advertisement
oaktree

client.c

Nov 3rd, 2016
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <signal.h>
  6.  
  7. #include <sys/types.h>
  8. #include <sys/socket.h>
  9. #include <netinet/in.h>
  10. #include <netdb.h>
  11. #include <arpa/inet.h>
  12.  
  13. void error(const char* msg) {
  14.     perror(msg);
  15.     exit(1);
  16. }
  17.  
  18. int main(int argc, char *argv[]) {
  19.  
  20.     signal(SIGCHLD, SIG_IGN); // ignore SIGCHLD to prevent zombies
  21.  
  22.  
  23.     if (argc < 3) error ("wrong number of args");
  24.  
  25.     int sockfd, portno, n;
  26.  
  27.     struct sockaddr_in serv_addr;
  28.     struct hostent *server;
  29.  
  30.     portno = atoi(argv[2]);
  31.  
  32.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
  33.     if (sockfd < 0) error("error opening socket");
  34.  
  35.     // server = (struct hostent *) getbyhostname(argv[1]); /// obselete
  36.  
  37.     if (!server) error("no such host");
  38.  
  39.     memset(&serv_addr, 0 , sizeof(serv_addr));
  40.     serv_addr.sin_family = AF_INET;
  41.  
  42.     //  copy server address from *server to serv_addr
  43.     // bcopy((char *) server->h_addr,
  44.     //  (char *) &serv_addr.sin_addr.s_addr,
  45.     //  server->h_length);
  46.     inet_pton(AF_INET, "127.0.0.1", &(serv_addr.sin_addr));
  47.  
  48.     serv_addr.sin_port = htons(portno);
  49.  
  50.     // check if connect to server
  51.     if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
  52.         error("problem connecting");
  53.  
  54.     printf("enter message:\n");
  55.  
  56.     char buffer[256];
  57.     bzero(buffer, 256);
  58.  
  59.     fgets(buffer, 255, stdin);
  60.  
  61.     n = write(sockfd, buffer, strlen(buffer)); // send data to server
  62.  
  63.     if (n < 0) error("error writing to socket");
  64.  
  65.     bzero(buffer, 256);
  66.  
  67.     n = read(sockfd, buffer, 255); // get response from server
  68.  
  69.     printf("%s\n", buffer);
  70.  
  71.     close(sockfd);
  72.  
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement