gpt4 book ai didi

python - 用于本地客户端-服务器通信的套接字与标准流

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:45 24 4
gpt4 key购买 nike

我有一个由本地“服务器”和 GUI 客户端组成的应用程序。服务器是用 Python 编写的,而 GUI 是可变的,是用 Flex 4 编写的。客户端向本地服务器查询信息并相应地显示它。这两个应用程序都应该在同一台计算机上运行,​​并且只会在本地进行通信。目前,客户端和Python服务器通过一个基本的套接字进行通信,客户端向套接字写入请求,套接字返回一些数据。

但是,由于我正在编写桌面应用程序,所以我认为使用标准流而不是套接字的系统可能更易于维护和完善。服务器会持续监听 raw_input(),并根据写入标准输入的任何内容输出,在这种情况下,客户端会使用 AIR 的 NativeProcess 类进行读写标准输出和标准输入,而不是使用套接字。

客户端和服务器是独立的进程,但应该或多或少同时启动。我真的不需要复杂的网络,只是本地跨语言交流。

每种方法的优缺点是什么?使用套接字会得到什么或失去什么,而使用标准流进行通信会得到什么或失去什么?哪一个更有效率?哪个更容易维护?

最佳答案

在类 UNIX 平台上,使用 stdin/stdout 是套接字,所以没有区别。也就是说,如果您启动一个带有重定向 stdout 的进程,这通常会通过 socketpair 完成,因此无需创建您自己的 UNIX 域套接字来进行通信。用于处理 stdin/stdout 的 Python 类不会让你访问底层套接字的全部灵 active ,所以你必须自己设置它我想如果你想做一个半关闭,例如(Python不能提供跨平台,因为 Windows sys::stdin 不能是一个套接字,例如,它也不总是在 UNIX 上。)

本地 TCP 连接的好处在于它是跨平台的,并且在任何地方都提供可预测的语义。例如,如果您希望能够关闭输出并仍然从输入中读取数据,那么使用随处相同的套接字来执行此类操作要简单得多。即使没有它,为了简单起见,使用 TCP 套接字始终是解决古怪的 Windows 命名管道困惑的合理方法,尽管 Python 很好地屏蔽了您。

关于python - 用于本地客户端-服务器通信的套接字与标准流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368272/

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