gpt4 book ai didi

c - 使用多线程的套接字服务器或文件服务器实现 : concept not clear

转载 作者:太空狗 更新时间:2023-10-29 11:47:26 25 4
gpt4 key购买 nike

请帮我理清这个概念。假设我们有一个使用线程实现的套接字端口服务器。套接字服务器监听套接字端口,并在消息到达时创建一个线程来为请求提供服务。

客户端代码向服务器发送给定数量的消息。此客户端代码也可以由多个用户从不同的机器运行。我知道客户端代码作为单独的进程运行。我是单独的进程向服务器发出请求,然后由服务器线程处理。

因此,客户端进程堆栈、用户地址空间、进程控制 block 等是否传递给处理其请求的服务器线程。

同理,如果是文件服务器,文件打开请求是由服务器线程实现的,那么fd是服务器文件描述符表的一部分还是调用进程。

如果能获得任何指向我可以阅读的资料的链接,我将不胜感激。谢谢

最佳答案

不,客户端和服务器是不同的进程,甚至可能运行在不同的机器上。

客户端将要求操作系统(通过库)向服务器发送网络消息,服务器的操作系统将解压缩它们并将它们(通过库)定向到服务器进程。

现在“客户端处理线程”是另一回事,它们是服务器进程的子组件,在您的设置中,其中一个线程(在网络另一端处理客户端的线程)将接收数据并做任何需要做的事情(如有必要,可能包括回复)。

在文件服务器的情况下,操作系统提供的文件描述符永远不会“离开”文件服务器。文件服务器客户端创建他们需要的任何东西来镜像远程机器的内容。此类镜像可能包括文件描述符,但它们绝对不同于驻留在服务器上的文件描述符。客户端文件描述符绑定(bind)到接受请求操作并将其转换为网络调用的代码,而服务器文件描述符(可能)直接访问磁盘上的 block 。

关于c - 使用多线程的套接字服务器或文件服务器实现 : concept not clear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com