本文主要介绍了在tornado框架中,使用tcpserver,tcpclient,struct.pack(),struct.unpack实现简单echo服务器的过程。
在网络通信中,需要发送二进制流数据;struct.pack()函数负责数据组包,即将数据按照规定的传输协议组合起来;struct.unpack()函数负责数据拆包,即按照规定的协议将数据拆分开来。
不多说,具体实现代码咱们来看一下。
tcp客户端代码如下:
# coding=utf-8
import struct
import logging
from tornado import ioloop, gen
from tornado.tcpclient import TCPClient
"""
tcpclient-struct.pack()组包
发送数据包格式:消息头+消息体
消息头:消息发送者(4字节)+消息接收者(4字节)+消息类型(1字节)+消息体中数据长度(4字节)
消息体:待发送数据
struct.unpack()拆包
接收数据包格式:消息头+消息体
消息头:消息发送者(4字节)+消息类型(1字节)+消息体中数据长度(4字节)
消息体:待接收数据
"""
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
class ChatClient(object):
def __init__(self, host, port):
self.host = host
self.port = port
@gen.coroutine
def start(self):
self.stream = yield TCPClient().connect(self.host, self.port)
while True:
yield self.send_message()
yield self.receive_message()
@gen.coroutine
def send_message(self):
# 待发送数据
msg =