import tornado.ioloop
import tornado.tcpserver
import tornado.gen
class MyTCPServer(tornado.tcpserver.TCPServer):
async def handle_stream(self, stream, address):
print(f"New connection from {address}")
while True:
try:
data = await stream.read_until(b"\n")
if not data:
print(f"Connection closed by {address}")
break
# 处理接收到的数据
self.handle_data(data, stream, address)
except Exception as e:
print(f"Error: {e}")
break
def handle_data(self, data, stream, address):
# 在这里处理接收到的数据
print(f"Received data from {address}: {data.decode().strip()}")
if __name__ == "__main__":
server = MyTCPServer()
server.listen(8888)
print("TCP server listening on port 8888")
tornado.ioloop.IOLoop.current().start()
在这个示例中,MyTCPServer 继承了 tornado.tcpserver.TCPServer 类,并实现了 handle_stream 方法来处理每个连接的 IOStream。在 handle_stream 方法中,通过异步方式读取数据,然后调用 handle_data 方法来处理接收到的数据。你可以在 handle_data 方法中添加自定义的处理逻辑。
要运行这个服务器,只需运行脚本并在浏览器或其他工具中连接到 localhost:8888,然后在终端中观察服务器的输出。
$ python my_tcp_server.py
这是一个基本的示例,你可以根据自己的需求添加更多的业务逻辑。在实际应用中,你可能需要更复杂的数据解析和处理、异常处理等。记得根据实际场景对异常情况进行适当的处理。
转载请注明出处:http://www.zyzy.cn/article/detail/7439/Tornado