アプリ版:「スタンプのみでお礼する」機能のリリースについて

ITです。早速ですがwinsockでURLを指定した接続確認をしたいのですが、うまくいきません。

下記のソースで、URLを指定してinet_addr関数呼び出すと-1、
gethostbynameを呼び出すと0が却ってきてしまい、うまく接続出来ません。
IPアドレス(127.0.0.1)を指定すれば、上記の関数は成功するのですが。
URLからIPアドレスの変換方法が解りません。
どうか助けて下さい。

int main(int argc, char* argv[])
{
WSADATA wsaData;
sockaddr_in server;
SOCKET sock;
long err;
hostent *host;
char *url = "http://www.yahoo.co.jp";

// winsock2の初期化
err = WSAStartup(MAKEWORD(2,0), &wsaData);
if (err != 0) {
printf("WSAStartup error = %d\n", err);
return(-1);
}

// ソケットの取得
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET) {
printf("socket error = %d\n", WSAGetLastError());
return(-1);
}

// IPアドレスの取得
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(80);
server.sin_addr.S_un.S_addr = inet_addr(url);
if (server.sin_addr.S_un.S_addr == -1) {
host = gethostbyname(url);
if (host == NULL) {
printf("host not found host = %d\n", WSAGetLastError());
return(-1);
}
}

A 回答 (1件)

http://を取り除く。

    • good
    • 0
この回答へのお礼

ITです。レス有難うございます。

ご指摘の通り、http://を取り除いたURLをgethostbynameに渡したら成功しました。

経験不足を実感しました。

お礼日時:2010/10/11 16:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!