微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在 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 举报,一经查实,本站将立刻删除。