Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. // import libraries
  2. #include<netinet/in.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<sys/socket.h>
  6. #include<sys/stat.h>
  7. #include<sys/types.h>
  8. #include<unistd.h>
  9. #include<arpa/inet.h>
  10. #include<string.h>
  11. #define SIZE 5096
  12.  
  13.  
  14. // request data from remote server
  15. int main()
  16. {
  17. int TCPsocket;
  18. struct sockaddr_in remote_server;
  19. char *message;
  20.  
  21. // Create TCP socket, flag 0 = TCP
  22. TCPsocket = socket(AF_INET , SOCK_STREAM , 0);
  23. if (TCPsocket < 0)
  24. {
  25. printf("Failed to create socket!!! \n");
  26. }
  27.  
  28.  
  29. // Chosen IP address: 64.129.32.115 - johnlawrimore.com
  30. remote_server.sin_addr.s_addr = inet_addr("64.129.32.115");
  31. remote_server.sin_family = AF_INET;
  32. remote_server.sin_port = htons(80);
  33.  
  34. // Connect to remote server
  35. if (connect(TCPsocket , (struct sockaddr *)&remote_server, sizeof(remote_server)) < 0)
  36. {
  37. puts("Cannot connect to the remote server!!! \n");
  38. return 1;
  39. }
  40.  
  41. // Send HTTP request to remote server
  42. message = "GET / HTTP/1.1\r\nHost: johnlawrimore.com\r\n\r\n";
  43. if(send(TCPsocket , message , strlen(message) , 0) < 0)
  44. {
  45. puts("Fail to send HTTP request!!! \n");
  46. return 1;
  47. }
  48.  
  49. // Receive data from remote server
  50. char data[SIZE];
  51. if(recv(TCPsocket, data, sizeof(data) , 0) < 0)
  52. {
  53. puts("Fail to receive data!!! \n");
  54. }
  55.  
  56. puts(data);
  57.  
  58. client_connection(data);
  59. return 0;
  60. }
  61.  
  62. int client_connection(char* data)
  63. {
  64. int sockfd, new_socket;
  65. socklen_t addrlen;
  66. // create socket
  67. if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
  68. printf("Connection failed!!! \n");
  69. return 1;
  70. }
  71.  
  72. // client host_port
  73. struct sockaddr_in client;
  74. client.sin_family = AF_INET;
  75. client.sin_addr.s_addr = INADDR_ANY;;
  76. client.sin_port = htons(8080);
  77.  
  78. if (bind(sockfd, (struct sockaddr *) &client, sizeof(client)) == 0){
  79. printf("Bound socket!!! \n\n");
  80. }
  81.  
  82.  
  83. while (1) {
  84. if (listen(sockfd, 10) < 0) {
  85. perror("Listening on PORT: 8080\n");
  86. exit(1);
  87. }
  88.  
  89. if ((new_socket = accept(sockfd, (struct sockaddr *) &client, &addrlen)) < 0) {
  90. perror("Accept connection failure!!! \n");
  91. exit(1);
  92. }
  93.  
  94. if (new_socket > 0){
  95. printf("Connected to proxy server!!! \n");
  96. }
  97.  
  98. // getting data from remote server
  99. char buffer[SIZE];
  100. recv(new_socket, buffer, sizeof(buffer), 0);
  101. printf("Remote server sent data: %s\n", buffer);
  102. write(new_socket, data, 326);
  103. close(new_socket);
  104. }
  105. close(sockfd);
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement