tcp 怎么发送文件夹?
时间: 2023-07-31 14:09:23 浏览: 61
TCP协议是一种面向连接的协议,它是通过网络传输数据的。TCP是一个字节流协议,它并不关心发送的数据的类型,因此,发送文件夹需要将文件夹打包成一个文件,然后再通过TCP协议进行传输。常见的文件打包格式有ZIP、RAR等。
下面是一个简单的Python代码示例,使用TCP协议发送文件夹:
```python
import socket
import zipfile
# 将文件夹打包成zip文件
def zip_dir(dirname, zipfilename):
filelist = []
zipf = zipfile.ZipFile(zipfilename, 'w', zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk(dirname):
for name in files:
filelist.append(os.path.join(root, name))
for tar in filelist:
arcname = tar[len(dirname):]
zipf.write(tar, arcname)
zipf.close()
# 发送zip文件
def send_file(filename, ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
sock.sendall(filename.encode('utf-8'))
with open(filename, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
sock.sendall(data)
sock.close()
if __name__ == '__main__':
# 打包文件夹
dirname = 'folder'
zipfilename = 'folder.zip'
zip_dir(dirname, zipfilename)
# 发送zip文件
ip = '127.0.0.1'
port = 8888
send_file(zipfilename, ip, port)
```
在上面的代码中,`zip_dir`函数可以将文件夹压缩成zip文件,`send_file`函数可以将zip文件通过TCP协议发送到指定的IP地址和端口号。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)