我在C ++中为类项目编写HTTP代理服务器。我似乎无法让套接字接受发送到服务器的请求。我跟随此示例:http://www.tutorialspoint.com/unix_sockets/socket_server_example.htm。这是我的代码片段:
memset(&server_addr, 0, sizeof(server_addr));
sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(PORTNUM);
if (bind(sockfd, (struct sockaddr*) &server_addr, sizeof(server_addr)) != 0) {
fprintf(stderr, "binding failure");
exit(EXIT_FAILURE);
}
if(listen(sockfd, 5) != 0) {
fprintf(stderr, "listening failure");
exit(EXIT_FAILURE);
}
else cout << "Listening for connections on port " << PORTNUM << "\n";
//------------END SERVER SETUP--------------------------
//-----------LISTEN LOOP--------------------
char request_buffer[1024];
ssize_t bytes_recieved;
HttpRequest request;
string errorMessage;
while(1) {
cout << "say something";
socklen_t client_addr_len = sizeof(client_addr);
connfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_addr_len);
...
当我运行服务器并将其设置为HTTP请求(例如GET http://www.google.com HTTP / 1.1)时,没有响应,因为套接字从不接受此连接。
我做错了什么?代码编译正确,我知道套接字绑定到端口并侦听连接。然而,它只是陷入无限循环,等待连接。
感谢您的帮助!