我正在尝试使用python(稍后可能在c中)和TCP套接字创建本地网络聊天程序。
我的目的是让服务器侦听当前计算机的地址以获取传入的消息,并将这些消息传递给客户端(我现在还不确定)。 客户端将是一个简单的gui,可以在本地连接上向活动服务器发送消息。实际上,此设置将形成节点网络。
是否可以在同一个应用程序中同时拥有服务器和客户端,最好不使用线程?我知道服务器会在收听连接时暂停,因此gui无法响应。
如果我不能在同一个应用程序中同时使用这两个应用程序,那么我认为有两个应用程序相互通信,但是线程似乎是一个更好的替代方案,因为我将以任何一种方式使用2个进程。如果我要使用单独的应用程序,我如何从服务器向客户端发送字符串,以更新gui?
我是否可以在希望服务器向客户端发送消息时发生某种事件(在客户端)?
此外,我如何检查服务器是否处于活动状态(可用并绑定到其计算机地址,等待消息)?
我的服务器/客户关系模型是否合理?有什么建议吗?
我已经检查过堆栈溢出的类似套接字问题,但是没有找到任何具体解决我的问题的问题。我可能错过了一些,所以如果发现它们相关,请将注意力转移给他们。
这个问题似乎非常相似:Python socket server: listening to multiple clients,但他们似乎没有“服务器”这样的问题。 &安培;每个客户。
注意:我是套接字和套接字的新手。联网。
答案 0 :(得分:2)
libevent
是其中最好的框架之一)。 Python异步套接字库之一是asyncio
- Python标准库的一部分(适用于现代Python版本)。