Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. /*
  2. * Data: 2009-03-01
  3. * Autor: Jakub Gasior <quebes@mars.iti.pk.edu.pl>
  4. * Kompilacja: $ gcc server1.c -o server1
  5. * Uruchamianie: $ ./server1 <numer portu>
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <sys/socket.h>
  11. #include <netinet/in.h>
  12. #include <arpa/inet.h>
  13. #include <sys/types.h>
  14. #include <netdb.h>
  15. #include <string.h>
  16. #include <errno.h>
  17. #include <unistd.h>
  18.  
  19. #define BUFF_SIZE 256
  20.  
  21. int main(int argc, char** argv) {
  22.  
  23. int listenfd, connfd;
  24. int retval, bytes;
  25. struct sockaddr_in servaddr;
  26. char buffer[BUFF_SIZE];
  27.  
  28. if (argc != 2) {
  29. fprintf(stderr, "Invocation: %s <PORT NUMBER>\n", argv[0]);
  30. exit(EXIT_FAILURE);
  31. }
  32.  
  33. listenfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
  34. if (listenfd == -1) {
  35. perror("socket()");
  36. exit(EXIT_FAILURE);
  37. }
  38.  
  39.  
  40. memset(&servaddr, 0, sizeof(servaddr));
  41. servaddr.sin_family = AF_INET;
  42. servaddr.sin_port = htons(atoi(argv[1]));
  43. servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  44.  
  45. if (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) {
  46. perror("bind()");
  47. exit(EXIT_FAILURE);
  48. }
  49.  
  50. if (listen(listenfd, 5) == -1) {
  51. perror("listen()");
  52. exit(EXIT_FAILURE);
  53. }
  54.  
  55. connfd = accept(listenfd, NULL, 0);
  56. if (connfd == -1) {
  57. perror("accept()");
  58. exit(EXIT_FAILURE);
  59. }
  60.  
  61. for (;;) {
  62.  
  63. bytes = recv(connfd, (void*)buffer, BUFF_SIZE, 0);
  64. if (bytes == -1) {
  65. perror("recv() failed");
  66. exit(EXIT_FAILURE);
  67. } else if (bytes == 0) {
  68. close(connfd);
  69. close(listenfd);
  70. exit(EXIT_SUCCESS);
  71. }
  72.  
  73. retval = write(STDOUT_FILENO, buffer, bytes);
  74.  
  75. if (send(connfd, buffer, bytes, 0) == -1) {
  76. perror("send()");
  77. exit(EXIT_FAILURE);
  78. }
  79. }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement