socket客户端和服务端,文件的传输

简介: socket 实现,客户端和服务端,文件的传输

我们需要了解Python中的socket库,socket库提供了一种在计算机之间进行通信的方法。在这篇文章中,我们将介绍如何使用Python的socket库实现客户端和服务端之间的文件传输和图片传输。

服务端

服务端主要负责监听客户端的连接请求,接收客户端发送的文件或图片,并将接收到的文件或图片保存到本地。

  1. 导入所需的库:

import socket
import os
import time
CopyCopy

  1. 创建一个TCP套接字并绑定到指定端口:

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
CopyCopy

  1. 监听客户端的连接请求:

server_socket.listen(5)
CopyCopy

  1. 等待客户端连接:

client_socket, client_address = server_socket.accept()
print(f'客户端 {client_address} 已连接')
CopyCopy

  1. 接收客户端发送的文件或图片:

while True:
data = client_socket.recv(1024)
if not data:
break
with open('received_data.jpg', 'wb') as f:
f.write(data)
print(f'已接收 {os.path.getsize('received_data.jpg')} 字节的数据')
CopyCopy

  1. 关闭套接字并退出循环:

client_socket.close()
server_socket.close()
CopyCopy

客户端

客户端主要负责连接服务端,发送文件或图片,并接收服务端返回的确认信息。

  1. 导入所需的库:

import socket
import os
import time
CopyCopy

  1. 创建一个TCP套接字并连接到服务端:

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
CopyCopy

  1. 发送文件或图片:

with open('image.jpg', 'rb') as f:
data = f.read()
client_socket.sendall(data)
print(f'已发送 {os.path.getsize('image.jpg')} 字节的数据')
CopyCopy

  1. 等待服务端确认:

data = client_socket.recv(1024)
print(f'接收到服务端消息: {data}')
CopyCopy

  1. 关闭套接字并退出循环:

client_socket.close()
CopyCopy

这样,客户端和服务端就可以实现文件的传输和图片的传输了。请注意,在实际应用中,您可能需要对代码进行一些修改,例如使用更安全的传输方式,处理传输错误等。

目录
相关文章
|
21天前
|
网络协议 程序员 Python
pythonTCP客户端编程创建Socket对象
【4月更文挑战第6天】本教程介绍了TCP客户端如何创建Socket对象。Socket作为网络通信的基础单元,包含协议、IP地址和端口等信息。在TCP/IP中,Socket分为流式(TCP)、数据报(UDP)和原始套接字。以Python为例,创建TCP Socket对象需调用`socket.socket(AF_INET, SOCK_STREAM)`。为确保健壮性,应使用异常处理处理可能的`socket.error`。学习本教程将帮助你掌握TCP客户端创建Socket对象的技能。
|
3月前
Socket网络编程练习题四:客户端上传文件(多线程版)
Socket网络编程练习题四:客户端上传文件(多线程版)
|
3月前
Socket网络编程练习题三:客户端上传文件到服务器
Socket网络编程练习题三:客户端上传文件到服务器
|
3月前
|
Java
Socket网络编程练习题五:客户端多用户上传文件(多线程版)并使用线程池管理线程
Socket网络编程练习题五:客户端多用户上传文件(多线程版)并使用线程池管理线程
|
12天前
|
网络协议 Ubuntu Unix
Linux 下使用 socket 实现 TCP 客户端
Linux 下使用 socket 实现 TCP 客户端
|
13天前
|
安全 程序员
|
3月前
C++socket客户端select异步连接发送接收数据
C++socket客户端select异步连接发送接收数据
24 0
|
3月前
|
Arthas 测试技术
错误提示表明Arthas无法打开目标进程的socket文件
错误提示表明Arthas无法打开目标进程的socket文件
51 2
|
3月前
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
|
3月前
Socket网络编程练习题一:客户端多次发送数据,服务端多次接收数据并打印
Socket网络编程练习题一:客户端多次发送数据,服务端多次接收数据并打印