Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. /**
  2. * @file main.c
  3. * @brief Description
  4. * @date 2018-1-1
  5. * @author name of author
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <unistd.h>
  11. #include <errno.h>
  12. #include <string.h>
  13. #include <sys/types.h>
  14. #include <sys/wait.h>
  15. #include <assert.h>
  16. #include <limits.h>
  17.  
  18. #include "debug.h"
  19. #include "memory.h"
  20. #include "args.h"
  21.  
  22. int main(int argc, char *argv[]){
  23. /* Receber porto a registar */
  24. struct gengetopt_args_info args;
  25. cmdline_parser(argc, argv, &args);
  26.  
  27. if (args.port_arg < 1 || args.port_arg > USHRT_MAX)
  28. {
  29. ERROR(1,"Invalid port number");
  30. }
  31.  
  32. /* Criar e registar socket UDP IPv4 */
  33. int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  34. if(sockfd == -1){
  35. ERROR(2,"Fail open socket");
  36. }
  37.  
  38. struct sockaddr_in udp_server_endpoint;
  39. memset(&udp_server_endpoint, 0, sizeof(struct sockaddr_in));
  40. udp_server.sin_family = AF_INET;
  41. udp_server.sin_addr.s_addr = htonl(INADDR_ANY); // Todas as interfaces de rede
  42. udp_server.sin_port = htons(args.port_arg); // Server port
  43. if (bind(udp_server_socket, (struct sockaddr *)&udp_server_endpoint, sizeof(struct sockaddr_in)) == -1)
  44. ERROR(32, "Can't bind @udp_server_endpoint info");
  45.  
  46. /* Registo local - bind */
  47.  
  48. /* Liberta memória */
  49. cmdline_parser_free(&args);
  50.  
  51. return 0;
  52. }
  53.  
  54. /*
  55. * Perguntas:
  56. * a) O que sucede quando é indicado um porto entre 1 e 1023 (inclusive)?
  57. * b) O que sucede quando se tenta registar um porto que já está registado?
  58. * Nota: é possível obter uma lista dos portos UDP registados no sistema através do utilitário netstat, executado da seguinte forma: netstat -u -l
  59. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement