this is probably trivial but I need help in making my server listen on my ISP IP address rather than the localhost in my client-server messager program. My server and client is as follows.
server
/*Server */
#define _WIN32_WINNT 0x501
#include <iostream>
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
using namespace std;
const int winsock_version = 2;
#define PORT "3490"
#define MAX_NUM_CONNECTIONS 10
int main(void){
WSADATA wsadata;
if (WSAStartup(MAKEWORD(winsock_version,0),&wsadata) == 0){
cout<<"-WSAStartup Initialized." << endl;
struct addrinfo hints,*res;
int sock_fd;
memset(&hints,0,sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;
if (getaddrinfo(NULL,PORT,&hints,&res) != 0){
cout<<"-Call to getaddress was unsucceful." << endl;
}
if( (sock_fd = socket(res->ai_family,res->ai_socktype,res->ai_protocol)) == -1){
cout<<"-Unable to Create socket." << endl;
}
if ( (bind(sock_fd, res->ai_addr, res->ai_addrlen)) != -1 ){
cout<<"-binding successful." << endl;
}
if ( (listen(sock_fd,MAX_NUM_CONNECTIONS)) != -1){
cout<<"-Listening for incoming connections." << endl;
}
//-------------------------------------------------------------
struct sockaddr_storage incming_info;
socklen_t sin_size;
sin_size = sizeof incming_info;
int new_fd;
new_fd = accept(sock_fd, (struct sockaddr*)&incming_info,&sin_size);
if (new_fd == -1){
cout<<"-Accepting error." << endl;
}
if(new_fd == INVALID_SOCKET){
cout<<"-INVALID SOCKET ERROR." << endl;
}
char buffer[128];
while(true){
int ret_val;
ret_val = recv(new_fd,buffer,sizeof(buffer),0);
if(ret_val == -1){
cout<<"Receiving Error." << endl;
break;
}else if(ret_val == 0){
cout<<"Connection has been closed!." << endl;
break;
}else{
cout<<"Server: " << buffer<< endl;
}
}
cout<<"-Closing connection" << endl;
closesocket(new_fd);
}else{
cout<<"-WSAStartup Initialization failed." << endl;
if(WSACleanup()!=0){
cout<<"-WSACleanup Successful." << endl;
}else{
cout<<"-WSACleanup Failed." << endl;
}
}
return 0;
}
client
/*client*/
#define _WIN32_WINNT 0x501
#include <iostream>
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
using namespace std;
#define PORT "3490"
#define SERVER "localhost"
const int winsockVersion = 2;
int main(void){
WSADATA wsadata;
if ( (WSAStartup(MAKEWORD(2,0),&wsadata)) == 0){
cout<<"-WSAStartup Initialized." << endl;
struct addrinfo hints, *res;
int sockfd;
memset(&hints,0,sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if (getaddrinfo(SERVER,PORT,&hints,&res) != 0){
cout<<"-getaddrinfo unsuccessful." << endl;
}
if ( (sockfd = socket(res->ai_family,res->ai_socktype,res->ai_protocol)) == -1 ){
cout<<"-Unable to create socket." << endl;
}
if ( (connect(sockfd,res->ai_addr,res->ai_addrlen)) != -1 ){
cout<<"-Connection Established." << endl;
}
cout<<"-Client connecting to: " << res->ai_addr << endl;
while(true){
string text_buff;
cout<<"Enter text: ";
getline(cin,text_buff);
if( (send(sockfd,text_buff.c_str(),text_buff.length()+1,0)) != -1 ){
cout<<"-text_buff sent!." << endl;
}
}
}else{
cout<<"-WSAStartup Initialization failed." << endl;
if(WSACleanup()!=0){
cout<<"-WSACleanup Successful." << endl;
}else{
cout<<"-WSACleanup Failed." << endl;
}
}
return 0;
}
I know how (i think) to specify the client in order to make it connect to my IP address XXX.XX.XXX.XX by changing the SERVER in client.cpp, But I'm not sure how to get the server to listen on this?.