Làm cách nào để thực hiện yêu cầu http bằng cách sử dụng ổ cắm trên linux? hiện nay, tôi nhận đượcThực hiện yêu cầu https bằng cách sử dụng ổ cắm trên linux
HTTP/1.1 301 Moved Permanently
//etc
Location: https://server.com
đây là phần có liên quan của mã (chức năng là quá lớn để trả lời ở đây):
/* Socket file descriptor. */
int sock;
struct sockaddr_in sockaddr;
struct hostent *host; /* Host information. */
sock = socket(AF_INET, /* IPV4 protocol. */
SOCK_STREAM, /* TCP socket. */
0); /* O for socket() function choose the correct protocol based on the socket type. */
if(sock == INVALID_SOCKET) return SOCK_GENERROR;
if((host = gethostbyname(server)) == NULL) {
close(sock);
return SOCK_HOSTNFOUND;
}
/* zero buffer */
memset(&sockaddr, 0, sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
memcpy(&sockaddr.sin_addr,
host -> h_addr,
host -> h_length);
sockaddr.sin_port = htons(port);
if(connect(sock, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) == INVALID_SOCKET) {
close(sock);
return SOCK_FERRCONN;
}
if(send(sock, sendbuf, bufsize, 0) == INVALID_SOCKET) {
close(sock);
return SOCK_FERRWRITE;
}
if((readed = recv(sock, recvbuffer, sizeof(recvbuffer), 0)) <= 0)
break;
trong cuộc gọi, server="server.com";
và port=80;
Tôi cố gắng để loại bỏ các thói quen onw và loại của tôi từ mã này để làm sạch hơn cho bạn.
Bạn đang cố thực hiện yêu cầu HTTP hoặc HTTPS? Bạn gửi dữ liệu gì trong 'sendbuf'? – Julien
@Julien: Yêu cầu https. – Jack