0

我在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);

它们都可以正常运行。

我想知道如何编写具有套接字服务器和客户端的预期程序。

4

0 回答 0