53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
# Created on 2018年4月18日
|
||
|
# author: Irony
|
||
|
# site: https://github.com/892768447
|
||
|
# email: 892768447@qq.com
|
||
|
# file: 控制小车.server
|
||
|
# description:
|
||
|
|
||
|
__Author__ = """By: Irony
|
||
|
QQ: 892768447
|
||
|
Email: 892768447@qq.com"""
|
||
|
__Copyright__ = 'Copyright (c) 2018 Irony'
|
||
|
__Version__ = 1.0
|
||
|
|
||
|
import logging
|
||
|
|
||
|
from tornado import gen
|
||
|
from tornado.ioloop import IOLoop
|
||
|
from tornado.iostream import StreamClosedError
|
||
|
from tornado.options import options, define
|
||
|
from tornado.tcpserver import TCPServer
|
||
|
|
||
|
|
||
|
define("port", default=8888, help="TCP port to listen on")
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
class EchoServer(TCPServer):
|
||
|
@gen.coroutine
|
||
|
def handle_stream(self, stream, address):
|
||
|
while True:
|
||
|
try:
|
||
|
data = yield stream.read_until(b"\n")
|
||
|
logger.info("Received bytes: %s", data)
|
||
|
if not data.endswith(b"\n"):
|
||
|
data = data + b"\n"
|
||
|
yield stream.write(data)
|
||
|
except StreamClosedError:
|
||
|
logger.warning("Lost client at host %s", address[0])
|
||
|
break
|
||
|
except Exception as e:
|
||
|
print(e)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
options.parse_command_line()
|
||
|
server = EchoServer()
|
||
|
server.listen(options.port)
|
||
|
logger.info("Listening on TCP port %d", options.port)
|
||
|
IOLoop.current().start()
|