Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. /* compile using cc -o DIDReadSocket DIDReadSocket.c */
  2.  
  3.  
  4. #include </sys/sys/types.h>
  5. #include </sys/sys/socket.h>
  6. #include </sys/netinet/in.h>
  7. #include <stdio.h>
  8.  
  9. /* in.h defines sockaddr_in as a struct */
  10.  
  11. /* program to create datagram socket in Internet domain, binds a name to it & reads from it */
  12.  
  13. main()
  14. {
  15. int sock, length;
  16. struct sockaddr_in name;
  17. char buf[1024];
  18.  
  19. /* create socket from which to read */
  20.  
  21. sock=socket(AF_INET, SOCK_DGRAM, 0);
  22. if(sock<0)
  23. {
  24. perror("opening datagram socket");
  25. exit(1);
  26. }
  27.  
  28. /* create name with wildcards */
  29.  
  30. name.sin_family=AF_INET;
  31. name.sin_addr.s_addr=INADDR_ANY;
  32. name.sin_port=0;
  33. if(bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0)
  34. {
  35. perror("binding datagram socket");
  36. exit(1);
  37. }
  38.  
  39. /* find assigned port value and print it out */
  40.  
  41. length=sizeof(name);
  42. if (getsockname(sock, (struct sockaddr *)&name, &length)<0)
  43. {
  44. perror("getting socket name");
  45. exit(1);
  46. }
  47. printf("Socket port #%d\n", ntohs(name.sin_port));
  48.  
  49. /* read from socket */
  50.  
  51. if (read(sock, buf, 1024)<0) perror("receiving datagram packet");
  52. printf("----->%s\n", buf);
  53. close(sock);
  54. exit(0);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement