我试图使服务器和客户端成为没有套接字的类似程序,因为我无法使用互联网来传递数据。我尝试使用管道标准输入,但我无法做到这一点......我有什么选择?服务器:def main():try: res = "" while res != "exit": res = input() print("\n", res, "\n")except EOFError as e: print(e)if __name__ == "__main__": main()客户:import subprocessimport osimport sysdef main(): p = subprocess.Popen(['python', 'b.py'], stdin=subprocess.PIPE) res = "" while res != "exit": res = os.fsencode(input(">> ")) p.stdin.write(res)if __name__ == "__main__": main()
2 回答

SMILET
TA贡献1796条经验 获得超4个赞
您的任务称为进程间通信或 IPC。Python 提供了多种方法来实现这一点。
可能最好的方法是实际使用套接字。如果您将套接字绑定到本地主机地址 (127.0.0.1),则所有通信都通过您机器上的虚拟网络适配器(环回适配器)进行。实际上没有数据通过网络传递。
另一种更依赖于平台的方法是使用 unix 套接字(基本上是以类文件实体作为地址的套接字,权限决定谁可以读取或写入它)或使用命名管道(基本上是不存储信息的虚拟文件,就像管道一样穿过它。它们非常繁琐)。
内存映射区域使用起来要复杂得多,并且通常需要一些其他机制来同步数据的状态,但它们以最高的速度和随机访问功能奖励您。您可能不应该将它用于您的服务器/客户端程序......
PS:StackOverflow 会更好,如果您添加您的代码并将“无法使其工作”扩展到您的操作的完整解释。
添加回答
举报
0/150
提交
取消