title: UDP Sockets in C
body: <p>I'm working on a homework problem for class. I want to start a UDP Server that listens for a file request. It opens the file and sends it back to the requesting client with UDP.</p>
  
  <p>Heres the server code.</p>
  
  <pre><code>    // Create UDP Socket
      if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
          perror("Can't create socket");
          exit(-1);
      }
  
      // Configure socket
      memset(&amp;server, 0, sizeof server);
      server.sin_family = AF_INET; // Use IPv4
      server.sin_addr.s_addr = htonl(INADDR_ANY); // My IP
      server.sin_port = htons(atoi(argv[1])); // Server Port
  
      // Bind socket
      if ((bind(sockfd, (struct sockaddr *) &amp;server, sizeof(server))) == -1) {
          close(sockfd);
          perror("Can't bind");
      }
  
      printf("listener: waiting to recvfrom...\n");
      if (listen(sockfd, 5) == -1) {
          perror("Can't listen for connections");
          exit(-1);
      }
  
  while (1) {
      client_len = sizeof(struct sockaddr_in);
      newsockfd = accept(sockfd, (struct sockaddr*)&amp;client,&amp;client_len);
  
      if (newsockfd &lt; 0) {
          perror("ERROR on accept");
      }
  
      // Some how parse request
      // I do I use recv or recvfrom?
      // I do I make new UDP socket to send data back to client?
  
      sendFile(newsockfd, filename);
  
      close(newsockfd);
  }
  
  close(sockfd);
  </code></pre>
  
  <p>I'm kind of lost how do I recv data from the client? And how to I make a new UDP connection back to the client?</p>