我在Linux上使用C。
我编写了一个套接字服务器程序,用于处理客户端的 HTTP 请求。当程序接收到一个特定的请求时,它会连接到另一个 HTTP 服务器,发送一个 HTTP 请求,接收响应,然后发送一个响应给客户端。
代码是这样的:
......
int server=socket(...);
......(socket initialization code)
......
listen(server,1);
char buff[1024]
while(1){
int client=accept(server,...);
recv(client,buff,1027,0);
if(strcmp(buff,"specific request")==0){
int sock=socket(...);
......(client socket initialization code)
connnect(sock,......);
send(sock,......);
recv(sock,......);
close(sock);
}
send(client,......);
close(client);
}
但它包含许多问题。例如,它应该运行send(sock,......)
3 次,这样recv(sock,......)
就不会永久阻塞并接收正确的数据。
当我像这样分离代码时:
......
int server=socket(...);
......(socket initialization code)
......
listen(server,1);
char buff[1024]
while(1){
int client=accept(server,...);
recv(client,buff,1027,0);
send(client,......);
close(client);
}
和
int sock=socket(...);
......(client socket initialization code)
connnect(sock,......);
send(sock,......);
recv(sock,......);
close(sock);
它们都可以正常运行。
我想知道如何编写具有套接字服务器和客户端的预期程序。