我正在使用 C 中的套接字制作 Web 代理。基本上,我侦听给定的端口号,从中接收 HTML 请求,发出请求,然后将我得到的内容发送回它的来源。
我已经完成了第一部分。我能够读取请求并将其发送到必要的 Web 服务器,并且我得到了有效的响应。我只是不确定如何将该响应发送到请求它的端口。
(我正在使用 Netcat 测试我的代码以发出请求并获得响应,而目前我尝试发送的响应没有被 Netcat 打印。)
这是我的相关代码:
struct sockaddr_in port;
bzero((char *) &port, sizeof(port));
port.sin_family = AF_INET;
port.sin_port = htons(atoi(argv[1]));
port.sin_addr.s_addr = INADDR_ANY;
int socket;
int acceptSocket;
char response[RESPONSE_SIZE];
socket = Socket(AF_INET, SOCK_STREAM, 0);
Bind(socket, (struct sockaddr *) &port, sizeof(port));
Listen(socket, 0);
acceptSocket = Accept(socket, NULL, NULL);
if (acceptSocket >= 0)
printf("Connection open on port %s\n", argv[1]);
if (!ForwardHTTPRequest(acceptSocket, response))
printf("Forward error\n");
shutdown(socket, 0);
Connect(socket, (struct sockaddr *) &port, sizeof(port));
Send(socket, response, strlen(response), 0);
最后三行是我尝试发回响应。我关闭了套接字的读取端,连接以便发送,然后发送。但这并没有产生任何响应。