- 网络 udp
- 多任务 线程
- 多任务 线程、进程
- 网络 tcp
- 飞鸽传书 完善
- 多任务 协程
- 正则表达式
- 网络通信过程、http 协议
- Web 服务器 并发服务器
- WSGI、mini Web 框架
- 装饰器、mini Web 框架 路由
- MySQL 基本使用
- MySQL 查询
- MySQL 与 Python 交互
- mini Web 框架 添加 MySQL 功能
- 其它知识
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
飞鸽传书 发送文件 创建 tcp 服务器
飞鸽传书-发送文件-创建tcp服务器
FeiQTcp.py(新建文件)
import threading
import time
import socket
tcp_server_socket = None # 用来存储tcp服务器套接字
def deal_feiq_data(recv_data):
"""处理接收到的飞秋数据"""
# b'1_lbt80_0#128#000C29770BAB#0#0#0#4000#9:1501516970:Administrator:DONGGE-32E5DBE1:96:597ee52c:0:0:'
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]
# int("0x131234", 16)---->将一个16进制数的字符串 转换为 整数
return int(packet_id, 16), int(file_id) # 用udp发送文件消息时的包编号,文件序号
def send_file(client_socket):
"""发送文件给客户端"""
request_data = client_socket.recv(1024)
# print(request_data)
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:
# print("等待新客户的链接。。。。", end="")
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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论