2024-04-18 16:58:31 发布
网友
我很难为客户机-服务器系统找到一个好的解决方案,在这个系统中,客户机向服务器发出请求,服务器用结果进行响应。服务器需要独立于客户机,也就是说,如果我创建一个新的python应用程序,我希望能够轻松地连接到服务器并发送请求。我知道一个可能的解决方案是使用套接字,但这感觉不必要复杂。我试过找经理,但我不确定是否在正确的轨道上。
我的目标是让一些东西像这样工作:
result = server.send("2+2") # result should now be 4
一旦我玩过这些东西(在Python中),这里有一个例子(不要介意代码的风格、格式、效率,因为它们都是蹩脚的,编程的PoV中没有很多NO s,只要把它看作是一个起点):
server.py:
import sys import select from SocketServer import TCPServer, StreamRequestHandler HOST = "127.0.0.1" PORT = 12345 class DummyRequestHandler(StreamRequestHandler): def handle(self): text = "" while 1: if select.select([self.rfile], [], [], 0.5)[0] == [self.rfile]: char = self.rfile.read(1) if char == ";": break else: text += char try: result = eval(text) except Exception as e: result = str(e) self.wfile.write(str(result) + ";") print "Listening on %s:%d" % (HOST, PORT) server = TCPServer((HOST, PORT), DummyRequestHandler) server.serve_forever()
client.py:
import sys import socket import select HOST = "127.0.0.1" PORT = 12345 EXIT_TEXT = "EXIT" text = "" while not text: text = raw_input("Enter text to send (%s to exit) :" % EXIT_TEXT) if text.upper() == EXIT_TEXT: print "Exiting" sys.exit(0) if text[-1] != ";": text += ";" s4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s4.connect((HOST, PORT)) s4.send(text) reply = "" while 1: if select.select([s4], [], [], 0.5)[0] == [s4]: char = s4.recv(1) if char == ";": break else: reply += char print "Server replied: %s\n" % reply s4.close()
我已经用Python2.7.10onWin测试过了。它使用简单的表达式。
签出^{}。它可以像超级电源插座一样点对点地使用,并且在代码中看起来很漂亮和干净,就像您的示例一样。This example显示了它是多么容易。
或者,您可以在服务器端使用像^{}或^{}这样的轻量级web服务框架来完成一个简单的REST接口。为了便于使用,它们可以单独运行,然后放在web服务器后面(例如,^{}和^{})以提高性能。在客户端,用普通的pythonrequests module与之交谈。
REST
一旦我玩过这些东西(在Python中),这里有一个例子(不要介意代码的风格、格式、效率,因为它们都是蹩脚的,编程的PoV中没有很多NO s,只要把它看作是一个起点):
我已经用Python2.7.10onWin测试过了。它使用简单的表达式。
签出^{} 。它可以像超级电源插座一样点对点地使用,并且在代码中看起来很漂亮和干净,就像您的示例一样。This example显示了它是多么容易。
或者,您可以在服务器端使用像^{} 或^{} 这样的轻量级web服务框架来完成一个简单的} 和^{} )以提高性能。在客户端,用普通的pythonrequests module与之交谈。
REST
接口。为了便于使用,它们可以单独运行,然后放在web服务器后面(例如,^{相关问题 更多 >
编程相关推荐