1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <time.h>
  8.  
  9. /* the port users will be connecting to */
  10. #define MYPORT 3440
  11. /* how many pending connections queue will hold */
  12. #define BACKLOG 10
  13.  
  14.  
  15. int createConnectedSocket(char* local_ip, int local_port, char* remote_ip, int remote_port);
  16.  
  17.  
  18. int main(int argc, char *argv[])
  19. {
  20. /* listen on sock_fd */
  21. int sockfd, new_fd;
  22. /* my address information, address where I run this program */
  23. struct sockaddr_in local_addr;
  24. /* remote address information */
  25. struct sockaddr_in remote_addr;
  26. int sin_size;
  27.  
  28.  
  29.  
  30. int testSocket = createConnectedSocket(argv[1], argv[2], argv[3], argv[4]);
  31.  
  32. sleep(30000);
  33.  
  34. close(testSocket);
  35. return 0;
  36. }
  37.  
  38. int createConnectedSocket(char* local_ip, int local_port, char* remote_ip, int remote_port) {
  39.  
  40. int tempSocket = socket(AF_INET, SOCK_DGRAM, 0);
  41. if (tempSocket < 0)
  42. return tempSocket;
  43.  
  44. // Create local socket
  45. struct sockaddr_in localsocket;
  46. memset(&localsocket, 0, sizeof(localsocket));
  47. localsocket.sin_family = AF_INET;
  48. localsocket.sin_addr.s_addr = local_ip;
  49. localsocket.sin_port = htons(local_port);
  50.  
  51. if (bind(tempSocket, (struct sockaddr *) &localsocket, sizeof(localsocket)))
  52. return -1;
  53.  
  54. // Create static remote connection
  55. struct sockaddr_in remotesocket;
  56. memset(&remotesocket, 0, sizeof(remotesocket));
  57. remotesocket.sin_family = AF_INET;
  58. remotesocket.sin_addr.s_addr = inet_addr(remote_ip);
  59. remotesocket.sin_port = htons(remote_port);
  60. if (connect(tempSocket, (struct sockaddr *) &remotesocket, sizeof(remotesocket)) < 0)
  61. return -1;
  62.  
  63. return tempSocket;
  64. }
  65.