我編寫了網絡應用程序,但主要是用Python編寫的。在進行套接字編程時,查找域名然後連接到域名的正確方法是什麼?
我正在編寫一個C++應用程序,我對語法應該是查找域名並連接到它的IP地址有點模糊。
具體而言,我不知道如何去形成gethostbyname()調用到套接字的結果。
我的代碼目前看起來是這樣的:
const hostent* host = GetHost(); //This works correctly
if (!host) {
DebugMessage("Bad host", "Could not resolve host");
return NULL;
}
DebugMessage("Got host", host->h_name);
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in addr;
addr.sin_family = AF_INET;
//This funky cast is what i'm concerned about
addr.sin_addr.s_addr = (*((in_addr*)(host->h_addr_list[0]))).s_addr;
addr.sin_port = htons(80);
DebugMessage("addr", (*((in_addr*)(host->h_addr_list[0]))).s_addr);
int c = connect(s, (SOCKADDR*)&addr, sizeof(addr));
int le = WSAGetLastError();
if (c == SOCKET_ERROR) {
//etc...
它的工作,但在我看來,那時髦投了分配s_addr似乎是什麼,我實際上做的太複雜了,導致我beleive這不是它「應該完成」的方式。我是否習慣了高級語言,這就是它應該的方式,還是我在某處遺漏了一個實用函數?
感謝您的幫助。
因此,如果我假設'h_addrtype'肯定是'AF_INET',我發佈的代碼基本上是正確的?那就是,我應該如何繼續這樣做?謝謝您的幫助。 –