使用C套接字的对等网络

使用C套接字的对等网络,c,sockets,p2p,C,Sockets,P2p,我不熟悉套接字编程,需要一些关于建立新的对等网络的帮助。我现在说的是一个服务器a同时连接到客户端B和客户端C。我正在使用select()API来建立这一点,到目前为止,这是可行的(A可以独立地与B和C通信);假设B请求在不涉及A的情况下连接到C。B和C仍将连接到A,但它们之间将有一个对等连接,以便能够相互交谈。知道这是怎么回事吗?我也尝试过让我的客户端程序像服务器一样运行,调用listen()和accept();但它只是冻结了我的客户 我有一个用户界面,可以在客户机/服务器上抛出命令,如果您想知

我不熟悉套接字编程,需要一些关于建立新的对等网络的帮助。我现在说的是一个服务器a同时连接到客户端B和客户端C。我正在使用select()API来建立这一点,到目前为止,这是可行的(A可以独立地与B和C通信);假设B请求在不涉及A的情况下连接到C。B和C仍将连接到A,但它们之间将有一个对等连接,以便能够相互交谈。知道这是怎么回事吗?我也尝试过让我的客户端程序像服务器一样运行,调用listen()和accept();但它只是冻结了我的客户

我有一个用户界面,可以在客户机/服务器上抛出命令,如果您想知道我是如何实现这一点的


任何帮助都将不胜感激。

对于TCP连接,一个对等方必须被动侦听,另一个必须主动连接。(有一个例外,TCP同时打开,这可能不是您想要的。)在您的示例中,要在B和C之间建立连接,您可以使用与a和B中相同的方法来实现。即,您可以使B侦听并接受,而C连接


为什么你的客户冻结?打印错误消息和
strace
是您的朋友。

您也可以在侦听套接字上
select()
,在连接准备好接受之前不要调用
accept()
,以避免阻塞。您的代码片段可能会有用。谷歌“对等协议”。此外,线程的服务器实例。谢谢,我正试图谷歌起来;还没有人帮忙。另外,由于安全原因,我也无法在这里共享我的代码。很抱歉,但我想我是在要求你们找到钥匙来开门,但我没有提到哪扇门:(我不知道为什么会发生这种情况。当我连接A和B时,一切都正常。但当我尝试将C连接到B,而B仍然连接到A时,它冻结了。在我从C提供连接后,B既不接受连接,也不执行任何其他操作(例如,通过命令显示自己的IP,这以前是有效的)。我猜B现在会主动侦听其他连接,而通过套接字的现有连接正在休眠,但这不是我的要求,我也尝试过这样设计代码。让我试试strace。错误消息也不会在此处打印:(