Hi Tim,
Thanks!
Sorry about the port 1172 thing. It is confusing. Please ignore it.
Here are the codes of the server (skip codes that deal with errors):
/// *********** Defined structure *************///
typedef int SOCKET_DESC;
typedef struct{
SOCKET_DESC id;
struct sockaddr_in saServer;
}SOCKET_HANDLE_STRUCT;
typedef SOCKET_HANDLE_STRUCT *SOCKET_HANDLE;
///*********** codes *********************///
// create socket
SOCKET_HANDLE listening_socket;
struct hostent *hp;
hp = gethostbyname((char *)(std::string(ServerName).c_str()));
listening_socket = CreateSocket((short) ServerPortNo, hp); // see below for the function that create a socket
// bind and listen
int len = sizeof (struct sockaddr_in);
int status = bind (listening_socket->id, (struct sockaddr *) (&(listening_socket->saServer)), len);
status = listen(listening_socket->id, 1);
// accept
SOCKET_HANDLE accepted_socket;
accepted_socket = new SOCKET_HANDLE_STRUCT;
len=sizeof(struct sockaddr_in);
accepted_socket->id=(SOCKET_DESC)accept(listening_socket->id,(struct sockaddr*)(&(listening_socket->saServer)),&len);
// the function that creates a socket
SOCKET_HANDLE CreateSocket(short nPort, struct hostent* lpHostEntry){
SOCKET_HANDLE theSocket;
struct sockaddr_in* saServer;
theSocket=new SOCKET_HANDLE_STRUCT;
theSocket->id = 0;
saServer = &(theSocket->saServer);
//Create a TCP/IP stream socket
theSocket->id = (SOCKET_DESC)socket(AF_INET,SOCK_STREAM,0);
int opt = 1;
if (setsockopt (theSocket->id, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof (opt)) < 0) {
printf(“setting socket option failed in TCPclient\n”);
}
if(theSocket->id == -1){
PrintNetworkError(“CreateSocket: cannot create socket. Error in socket()”);
free(theSocket);
return NULL;
}
//Fill in the address structure
saServer->sin_family=AF_INET;
saServer->sin_addr=((struct in_addr)(lpHostEntry->h_addr));//Server address
saServer->sin_port = htons(nPort); // Port number
return theSocket;
}