I obviously am doing something wrong. Can someone identify what it could be?
If I try to connect to this server using "127.0.0.1", all is well. But if I use my WAN ip, I never get connected. (The port is already forwarded).
Any help appreciated.
Code:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
int main (void)
{
WSADATA wsaData;
SOCKET sckserver = INVALID_SOCKET;
struct sockaddr_in server;
SOCKET sckclient = INVALID_SOCKET;
int addrclientlen;
struct sockaddr_in client;
int result = 0;
unsigned int numrecv = 0;
char recvbuf[1024];
int recvbuflen = 1024;
unsigned short *temp, port;
unsigned long *tempip, ip;
printf("Initializing Proxy Server...\n");
result = WSAStartup(MAKEWORD(2,2), &wsaData);
if (result != NO_ERROR)
{
printf("Error at WSAStartup()\n");
return 0;
}
sckserver = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sckserver == INVALID_SOCKET)
{
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 0;
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(6112);
if (bind(sckserver, (SOCKADDR*)&server, sizeof(server)) == SOCKET_ERROR)
{
printf("bind() failed.\n");
closesocket(sckserver);
return 0;
}
printf("Socket successfully bound on port 6112\n");
if (listen(sckserver, SOMAXCONN ) == SOCKET_ERROR)
{
printf("Error listening on socket.\n");
WSACleanup();
return 0;
}
printf("Listening for incoming connections...\n");
addrclientlen = sizeof(client);
sckclient = accept(sckserver, (SOCKADDR*)&client, &addrclientlen);
if (sckclient != INVALID_SOCKET)
{
printf("Connection Established!\n");
result = 1;
while (result != 0)
{
result = recv(sckclient, recvbuf, recvbuflen, 0);
if ( result > 0 )
{
numrecv++;
if (numrecv == 1)
{
printf("SOCKS Version Number: 0x%02X\n", recvbuf[0]);
printf("Command Code: 0x%02X\n", recvbuf[1]);
temp = (unsigned short *)&recvbuf[2];
port = ntohs(*temp);
printf("Port Number: %d\n", port);
tempip = (unsigned long *)&recvbuf[4];
ip = *tempip;
printf("%X\n", ip);
}
}
}
numrecv = 0;
printf("Connection Terminated!\n");
closesocket(sckclient);
}
WSACleanup();
return 1;
}