TCPServerUtility.c 826 B

1234567891011121314151617181920212223242526272829
  1. #include <sys/socket.h>
  2. #include <unistd.h>
  3. #include "Practical.h"
  4. void HandleTCPClient(const int client_sock) {
  5. char buffer[BUFSIZE];
  6. ssize_t num_bytes_rcvd = recv(client_sock, buffer, BUFSIZE, 0);
  7. if (num_bytes_rcvd < 0) {
  8. DieWithSystemMessage("recv() failed");
  9. }
  10. while (num_bytes_rcvd > 0) {
  11. ssize_t num_bytes_sent = send(client_sock, buffer, num_bytes_rcvd, 0);
  12. if (num_bytes_sent < 0) {
  13. DieWithSystemMessage("send() failed");
  14. } else if (num_bytes_sent != num_bytes_rcvd) {
  15. DieWithUserMessage("send()", "sent unexpected number of bytes");
  16. }
  17. num_bytes_rcvd = recv(client_sock, buffer, BUFSIZE, 0);
  18. if (num_bytes_rcvd < 0) {
  19. DieWithSystemMessage("recv() failed");
  20. }
  21. }
  22. close(client_sock);
  23. }