Advertisement
Tobiahao

S01_BSD_01_SERVER

Jan 23rd, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1. /*
  2. Napisz programy do przesyłania prostych komunikatów między dwoma komputerami zuż yciem protokoł u TCP/IP.
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <sys/types.h>
  8. #include <sys/socket.h>
  9. #include <arpa/inet.h>
  10. #include <unistd.h>
  11. #include <string.h>
  12.  
  13. #define PORT 1919
  14. #define MAX_CLIENTS 5
  15. #define READ_BUFFER_SIZE 128
  16.  
  17. void error_handler(const char *msg)
  18. {
  19.     perror(msg);
  20.     exit(EXIT_FAILURE);
  21. }
  22.  
  23. int main(void)
  24. {
  25.     struct sockaddr_in server_addr, client_addr;
  26.     int server_socket, client_socket;
  27.     char buffer[READ_BUFFER_SIZE];
  28.  
  29.     if((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
  30.         error_handler("socket");
  31.  
  32.     server_addr.sin_family = AF_INET;
  33.     server_addr.sin_port = htons(PORT);
  34.     server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  35.     memset(server_addr.sin_zero, '\0', 8);
  36.  
  37.     if(bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1)
  38.         error_handler("bind");
  39.  
  40.     if(listen(server_socket, MAX_CLIENTS) == -1)
  41.         error_handler("listen");
  42.  
  43.     printf("Oczekiwanie na polaczenie...\n");
  44.  
  45.     socklen_t struct_size = sizeof(struct sockaddr);
  46.     if((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &struct_size)) == -1)
  47.         error_handler("accept");
  48.  
  49.     printf("Polaczono, oczekiwanie na przeslanie wiadomosci...\n");
  50.  
  51.     memset(buffer, '\0', READ_BUFFER_SIZE);
  52.     if(read(client_socket, buffer, READ_BUFFER_SIZE-1) == -1)
  53.         error_handler("read");
  54.  
  55.     printf("Przeslana wiadomosc: %s\n", buffer);
  56.  
  57.     if(close(server_socket) == -1)
  58.         error_handler("close");
  59.  
  60.     return EXIT_SUCCESS;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement