tcp_client.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #include <arpa/inet.h>
  6. #include <netinet/in.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <sys/socket.h>
  11. #include <unistd.h>
  12. #ifdef __wasi__
  13. #include <wasi_socket_ext.h>
  14. #endif
  15. int
  16. main(int argc, char *argv[])
  17. {
  18. int socket_fd, ret, total_size = 0;
  19. char buffer[1024] = { 0 };
  20. struct sockaddr_in server_address = { 0 };
  21. printf("[Client] Create socket\n");
  22. socket_fd = socket(AF_INET, SOCK_STREAM, 0);
  23. if (socket_fd == -1) {
  24. perror("Create socket failed");
  25. return EXIT_FAILURE;
  26. }
  27. /* 127.0.0.1:1234 */
  28. server_address.sin_family = AF_INET;
  29. server_address.sin_port = htons(1234);
  30. server_address.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  31. printf("[Client] Connect socket\n");
  32. if (connect(socket_fd, (struct sockaddr *)&server_address,
  33. sizeof(server_address))
  34. == -1) {
  35. perror("Connect failed");
  36. close(socket_fd);
  37. return EXIT_FAILURE;
  38. }
  39. printf("[Client] Client receive\n");
  40. while (1) {
  41. ret = recv(socket_fd, buffer + total_size, sizeof(buffer) - total_size,
  42. 0);
  43. if (ret <= 0)
  44. break;
  45. total_size += ret;
  46. }
  47. printf("[Client] %d bytes received:\n", total_size);
  48. if (total_size > 0) {
  49. printf("Buffer recieved:\n%s\n", buffer);
  50. }
  51. close(socket_fd);
  52. printf("[Client] BYE \n");
  53. return EXIT_SUCCESS;
  54. }