python3 socket 实现TFTP文件上传

python3 socket 实现TFTP文件上传

要使用Python3套接字上载TFTP文件,可以使用以下代码作为示例:

import socket
import struct

filename = 'file.txt'
server_ip = '192.168.1.1'
server_port = 69

# create socket object
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# pack the request
request = struct.pack('!H%dsB5sB' % len(filename), 2, bytes(filename, 'utf-8'), 0, b'octet', 0)

# send the request
client_socket.sendto(request, (server_ip, server_port))

# open file for reading
with open(filename, 'rb') as file:
    block_number = 1
    data = file.read(512)
    while data:
        # pack the data and block number
        data_packet = struct.pack('!H', 3) + struct.pack('!H', block_number) + data
        # send the data
        client_socket.sendto(data_packet, (server_ip, server_port))
        # wait for acknowledgment
        ack_packet, server_address = client_socket.recvfrom(1024)
        # check acknowledgment
        ack_block_number = struct.unpack('!H', ack_packet[2:4])[0]
        if ack_block_number != block_number:
            print('Received acknowledgment for incorrect block number.')
            break
        # read next block of data
        block_number += 1
        data = file.read(512)

# close socket
client_socket.close()

在本例中,我们首先使用socket.socket()创建一个套接字对象。然后打包TFTP请求并使用sendto()将其发送到服务器。然后,我们打开要上载的文件,并以512字节的块读取它。对于每个块,我们将数据和块号打包到一个数据包中,并将其发送到服务器。然后,我们使用recvfrom()等待确认数据包。我们检查确认块号是否与刚才发送的块号匹配,然后读取下一个数据块。最后,我们使用close()关闭套接字。

www.0574web.net 宁波海美seo网络优化公司 是网页设计制作,网站优化,企业关键词排名,网络营销知识和开发爱好者的一站式目的地,提供丰富的信息、资源和工具来帮助用户创建令人惊叹的实用网站。 该平台致力于提供实用、相关和最新的内容,这使其成为初学者和经验丰富的专业人士的宝贵资源。

点赞(12) 打赏

声明本文内容来自网络,若涉及侵权,请联系我们删除! 投稿需知:请以word形式发送至邮箱18067275213@163.com

评论列表 共有 6 条评论

励志文章 1年前 回复TA

Options +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^domain.com [NC]RewriteRule ^(.*)$ .domain.com/$1 [L,R=301]会不会对.domain.com/index.htm有效呀,是不是另加上一行:redirect 301 /.domain.com/index.htm .domain.com

小健 1年前 回复TA

实战最重要,不知道站长现在有啥联署计划

活着 1年前 回复TA

第一次来到站长老师的博客,以后会多多关注,关于国内国外主机的那个回答是玩笑吧?

上海签证网 1年前 回复TA

我要整理成word文档,嘿嘿~~

跨境电商平台 1年前 回复TA

脚踏实地,认真做好网站内容,真正对用户有价值才是王道吧,现在百度越来越智能了,不像以前那么容易做排名了吧。

php程序员 1年前 回复TA

本来想出来一句不错的台词,谁知道 发了好几遍没有发上,换换,拙词一句:怎一个“牛”字了得!

立即
投稿
发表
评论
返回
顶部