我在使用套接字时无法理解fork。我知道fork是这样你可以同时处理多个客户端,但是我不确定它是否应该在以下场景中使用:
我正在创建一个P2P服务器的模拟器。我必须有一个跟踪器和一个同伴。跟踪器处理来自所有对等方的连接。当对等体首次连接到跟踪器时,它会将其文件列表发送给跟踪器,然后跟踪器将所有文件保存在集合中(包括IP地址)(该集合具有来自所有对等体的文件)。此外,如果对等体退出,则跟踪器从集合中移除该对等体的文件(包含其IP地址的文件)。如果跟踪器收到" get files"那么跟踪器将向任何对等方发送整个文件列表。命令。
在这里我不明白我如何使用fork(或者如果它甚至是必要的),因为如果我使用fork,那么当客户端退出时,我将从列表中删除它的文件但是因为它在它自己的过程,如何在子进程之外更改列表?
答案 0 :(得分:1)
使用单个进程(使用线程或围绕发现函数的循环,如select
或poll
),或使用某种方式跨进程(如文件,数据库或数据库)同步信息共享内存。