#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* the port users will be connecting to */
#define MYPORT 3440
/* how many pending connections queue will hold */
#define BACKLOG 10
int createConnectedSocket(char* local_ip, int local_port, char* remote_ip, int remote_port);
int main(int argc, char *argv[])
{
/* listen on sock_fd */
int sockfd, new_fd;
/* my address information, address where I run this program */
struct sockaddr_in local_addr;
/* remote address information */
struct sockaddr_in remote_addr;
int sin_size;
int testSocket = createConnectedSocket(argv[1], argv[2], argv[3], argv[4]);
sleep(30000);
close(testSocket);
return 0;
}
int createConnectedSocket(char* local_ip, int local_port, char* remote_ip, int remote_port) {
int tempSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (tempSocket < 0)
return tempSocket;
// Create local socket
struct sockaddr_in localsocket;
memset(&localsocket, 0, sizeof(localsocket));
localsocket.sin_family = AF_INET;
localsocket.sin_addr.s_addr = local_ip;
localsocket.sin_port = htons(local_port);
if (bind(tempSocket, (struct sockaddr *) &localsocket, sizeof(localsocket)))
return -1;
// Create static remote connection
struct sockaddr_in remotesocket;
memset(&remotesocket, 0, sizeof(remotesocket));
remotesocket.sin_family = AF_INET;
remotesocket.sin_addr.s_addr = inet_addr(remote_ip);
remotesocket.sin_port = htons(remote_port);
if (connect(tempSocket, (struct sockaddr *) &remotesocket, sizeof(remotesocket)) < 0)
return -1;
return tempSocket;
}