Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // import libraries
- #include<netinet/in.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<sys/socket.h>
- #include<sys/stat.h>
- #include<sys/types.h>
- #include<unistd.h>
- #include<arpa/inet.h>
- #include<string.h>
- #define SIZE 5096
- // request data from remote server
- int main()
- {
- int TCPsocket;
- struct sockaddr_in remote_server;
- char *message;
- // Create TCP socket, flag 0 = TCP
- TCPsocket = socket(AF_INET , SOCK_STREAM , 0);
- if (TCPsocket < 0)
- {
- printf("Failed to create socket!!! \n");
- }
- // Chosen IP address: 64.129.32.115 - johnlawrimore.com
- remote_server.sin_addr.s_addr = inet_addr("64.129.32.115");
- remote_server.sin_family = AF_INET;
- remote_server.sin_port = htons(80);
- // Connect to remote server
- if (connect(TCPsocket , (struct sockaddr *)&remote_server, sizeof(remote_server)) < 0)
- {
- puts("Cannot connect to the remote server!!! \n");
- return 1;
- }
- // Send HTTP request to remote server
- message = "GET / HTTP/1.1\r\nHost: johnlawrimore.com\r\n\r\n";
- if(send(TCPsocket , message , strlen(message) , 0) < 0)
- {
- puts("Fail to send HTTP request!!! \n");
- return 1;
- }
- // Receive data from remote server
- char data[SIZE];
- if(recv(TCPsocket, data, sizeof(data) , 0) < 0)
- {
- puts("Fail to receive data!!! \n");
- }
- puts(data);
- client_connection(data);
- return 0;
- }
- int client_connection(char* data)
- {
- int sockfd, new_socket;
- socklen_t addrlen;
- // create socket
- if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
- printf("Connection failed!!! \n");
- return 1;
- }
- // client host_port
- struct sockaddr_in client;
- client.sin_family = AF_INET;
- client.sin_addr.s_addr = INADDR_ANY;;
- client.sin_port = htons(8080);
- if (bind(sockfd, (struct sockaddr *) &client, sizeof(client)) == 0){
- printf("Bound socket!!! \n\n");
- }
- while (1) {
- if (listen(sockfd, 10) < 0) {
- perror("Listening on PORT: 8080\n");
- exit(1);
- }
- if ((new_socket = accept(sockfd, (struct sockaddr *) &client, &addrlen)) < 0) {
- perror("Accept connection failure!!! \n");
- exit(1);
- }
- if (new_socket > 0){
- printf("Connected to proxy server!!! \n");
- }
- // getting data from remote server
- char buffer[SIZE];
- recv(new_socket, buffer, sizeof(buffer), 0);
- printf("Remote server sent data: %s\n", buffer);
- write(new_socket, data, 326);
- close(new_socket);
- }
- close(sockfd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement