-
February 16th, 2013, 07:19 PM
#1
gethostbyaddr and gethostbyname
Any help on this appreciated.
This is a winsock program designed to prompt the user to enter a domain name.
The program is then supposed to return to the user a resolved ip address of that domain name. The user should also be able to enter an IP address and receive back a domain name.
While the program prompts the user to enter the domain name, all that is ever returned is error#:0
Can anyone shed light on why??
See code
HTML Code:
// Declare and initialize variables
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
int main(int argc, char **argv)
{
hostent* remoteHost;
char* host_name;
unsigned int addr;
//------------------------------------------------------------------------------------------------
//Initialize WINSOCK 2
WSADATA wsaData; //structure that holds information about current wsock version.
if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0) //start wsock version 2.2. Function returns
//0 if successful, otherwise, there was an error that needs to be reported.
{
std::cout << "WSAStartup failed: " << WSAGetLastError(); //report the error if there is one
return 1; //exit the program.
}
//-------------------------------------------------------------------------------------------------
// User inputs name of host
printf("Input name of host: ");
//-------------------------------------------------------------------------------------------------
// Allocate 64 byte char string for host name
host_name = (char*) malloc(sizeof(char)*64);
fgets(host_name, 64, stdin);
//-------------------------------------------------------------------------------------------------
// If the user input is an alpha name for the host, use gethostbyname()
// If not, get host by addr (assume IPv4)
if (isalpha(host_name[0])) { /* host address is a name */
// if hostname terminated with newline '\n', remove and zero-terminate
if (host_name[strlen(host_name)-1] == '\n')
host_name[strlen(host_name)-1] = '\0';
remoteHost = gethostbyname(host_name);
}
else {
addr = inet_addr(host_name);
remoteHost = gethostbyaddr((char *)&addr, 4, AF_INET);
}
if (WSAGetLastError() != 0) {
if (WSAGetLastError() == 11001)
printf("Host not found...\nExiting.\n");
}
else
printf("error#:%ld\n", WSAGetLastError());
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|