飞鸽传书-发送文件-创建tcp服务器
FeiQTcp.py(新建文件)
import threading
import time
import socket
tcp_server_socket = None
def deal_feiq_data(recv_data):
"""处理接收到的飞秋数据"""
recv_data = recv_data.decode("gbk", errors="ignore")
feiq_data_list = recv_data.split(":", 5)
feiq_data = dict()
feiq_data['version'] = feiq_data_list[0]
feiq_data['packet_id'] = feiq_data_list[1]
feiq_data['user_name'] = feiq_data_list[2]
feiq_data['host_name'] = feiq_data_list[3]
feiq_data['command_num'] = feiq_data_list[4]
feiq_data['option'] = feiq_data_list[5]
return feiq_data
def get_file_info(option):
"""提取文件信息"""
file_info_list = option.split(":", 3)
packet_id = file_info_list[0]
file_id = file_info_list[1]
return int(packet_id, 16), int(file_id)
def send_file(client_socket):
"""发送文件给客户端"""
request_data = client_socket.recv(1024)
feiq_data = deal_feiq_data(request_data)
packet_id, file_id = get_file_info(feiq_data['option'])
print("对方请求下载文件的包编号是:%d, 序号是:%d" % (packet_id, file_id))
client_socket.close()
def tcp_main():
"""用来完成tcp相关的功能控制"""
global tcp_server_socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.bind(("", 2425))
tcp_server_socket.listen(128)
while True:
client_socket, client_addr = tcp_server_socket.accept()
send_file_thread = threading.Thread(target=send_file, args=(client_socket,))
send_file_thread.start()
if __name__ == "__main__":
tcp_main()