python socket编程实例 tcp文件下载器

本文通过一个客户端与服务器交互的实例介绍了socket编程的基本原理和技术要点。客户端请求服务器下载指定文件,服务器根据请求提供文件服务。

通过这个实例加深对socket编程的理解

先编写客户端:

import socket


def main():
	// 创建套接字
	tcp__client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	dest_ip = input('请输入服务器IP:')
	dest_port = int(input('请输入服务器PORT:'))  // 注意转为整型
	// 连接服务器
	tcp_client_socket.connect((dest_ip,dest_port))
	down_file_name = input('请输入需要下载的文件名字:')
	// 将文件名传至服务器
	tcp_client_socket.sendall(down_file_name.encode('utf-8'))
	// 接收服务器返回的数据
	recv_data = tcp_client_socket.recv(1024)  // 1024为可接收的字节大小
	// 判断是否有此文件
	if recv_data:
		with open("新" + down_file_name, "wb") as f:
		f.write(recv_data)
	else:
		print('没有此文件')
	// 关闭套接字
	tcp_client_socket.close()


if__name__ == '__name__':
	main()

接下来到服务器端了:

import socket


def send_file_2_client(client_socket, client_addr):
	// 接收客户端传过来的数据
	file_name = client_socket.recv(1024).decode('utf-8')
	print('客户端%s需要下载的文件是%s' % (str(client_addr), file_name))
	file_content = None  
	try:
		f = open(file_name, "rb")
		file_content = f.read()  // 将读取到的数据存放在file_content
		f.close
	expect: Execpect as e:
		print('没有需要下载的文件')
	// 判断是否发送数据
	if file_content:
		client_socket.sendall(file_content)



def main():
	// 创建套接字
	tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	// 服务器绑定端口
	server_ip = ''
	server_port = 10000
	tcp_server_socket.bind((server_ip, server_port))
	// 监听
	tcp_server_socket.listen(128)
	// 等待connect
	client_socket, client_addr = tcp_server_socket.accept()
	// 调用
	send_file_2_client(client_socket, client_addr)
	client_socket.close()
	tcp_server_socket.close()
	

if __name__ == '__main__':
	main()

大家实验的时候在目录下随便建个文件然后在里面随便写点东西就行了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值