当一个程序同时包含套接字服务器和客户端时,我们应该注意什么?

问题描述

我在 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,......) 三次,以便 recv(sock,......) 不会永久阻塞并接收正确的数据。

当我像这样分离代码时:

......
int server=socket(...);
......(socket initialization code)
......
listen(server,0);
    send(client,......);
    close(client);
}

int sock=socket(...);
......(client socket initialization code)
connnect(sock,......);
send(sock,......);
recv(sock,......);
close(sock);

它们都可以正确运行。

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)