Ich bin ein Student, der MFC studiert. Ich möchte eine Antwort von einer HTTP-Server-Socket-Programmierung in MFC erhalten. Aber ich kann dieses Problem nicht lösen.Wie kann ich eine Antwort von einem HTTP-Server in MFC erhalten?
Mein Code ist:
SOCKET m_client_socket;
WSADATA wsadata;
struct sockaddr_in server_addr;
char *http_Request;
char *http_recv_data;
int recv_len;
if (!WSAStartup(DESIRED_WINSOCK_VERSION, &wsadata))
{
if (wsadata.wVersion < MINIMUM_WINSOCK_VERSION)
{
WSACleanup();
return;
}
}
// Create socket
m_client_socket = socket(PF_INET, SOCK_STREAM, 0);
if (m_client_socket == INVALID_SOCKET)
{
AfxMessageBox("socket error : ");
WSACleanup();
return;
}
// Set value
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("www.example.com");
server_addr.sin_port = htons(80);
// Connect
if (connect(m_client_socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)) == SOCKET_ERROR)
{
AfxMessageBox("connect error : ");
closesocket(m_client_socket);
return;
}
// send(m_client_socket, http_Request, strlen(http_Request), 0);
recv_len = recv(m_client_socket, http_recv_data, BUFSIZE, 0);
http_recv_data[recv_len] = '\0';
MessageBox(http_recv_data, "Return Value", NULL);
// Close
closesocket(m_client_socket);
WSACleanup();
Es gibt keine Fehler, aber ich erhielt NULL. Hilf mir, mein Herr!
'8.8.8.8' sind öffentlicher DNS-Server von Google. Warum erwarten Sie dort einen Webserver? Sie könnten 'example.com' ausprobieren, aber nicht Server, die Sie nicht kontrollieren. –
Sie müssen eine HTTP-Anforderung senden, bevor der Server mit einer HTTP-Antwort antwortet. Warum sollte der Server Daten senden, nachdem Sie nur eine Verbindung hergestellt haben? –