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()創(chuàng)建一個套接字對象。然后打包TFTP請求并使用sendto()將其發(fā)送到服務器。然后,我們打開要上載的文件,并以512字節(jié)的塊讀取它。對于每個塊,我們將數據和塊號打包到一個數據包中,并將其發(fā)送到服務器。然后,我們使用recvfrom()等待確認數據包。我們檢查確認塊號是否與剛才發(fā)送的塊號匹配,然后讀取下一個數據塊。最后,我們使用close()關閉套接字。
yinyiprinting.cn 寧波海美seo網絡優(yōu)化公司 是網頁設計制作,網站優(yōu)化,企業(yè)關鍵詞排名,網絡營銷知識和開發(fā)愛好者的一站式目的地,提供豐富的信息、資源和工具來幫助用戶創(chuàng)建令人驚嘆的實用網站。 該平臺致力于提供實用、相關和最新的內容,這使其成為初學者和經驗豐富的專業(yè)人士的寶貴資源。聲明本文內容來自網絡,若涉及侵權,請聯系我們刪除! 投稿需知:請以word形式發(fā)送至郵箱[email protected]
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