Python使用tcp编写一个简易的文件下载器(服务端和客户端)
2018-03-13 23:47
696 查看
使用tcp编写一个简易的文件下载器
要求:需编写文件下载器服务端和文件下载器客户端
客户端:
"""
(1)创建客户端socket
(2)连接服务端ip和端口
(3)send消息或recv消息
(4)关闭客户端socket
"""
import socket
def main():
# 创建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取用户输入的服务器ip,port,文件名
server_ip = input("请输入服务器ip:")
server_port = int(input("请输入服务器端口:"))
file_name = input("请输入要下载的文件名:")
# 连接服务器
tcp_client_socket.connect((server_ip, server_port))
# 发送请求的文件名
tcp_client_socket.send(file_name.encode("utf-8"))
# 接收返回的内容写入文件
file_content = tcp_client_socket.recv(1024*1024)
# 内容不为空就写入文件
if file_content:
with open("download_"+file_name, "wb") as f:
f.write(file_content)
# 关闭客户端socket
tcp_client_socket.close()
if __name__ == '__main__':
main()
服务端:
"""
(1)创建服务端socket
(2)绑定服务端ip和端口
(3)把服务端socket设置为listen模式,由主动接收信息改为被动接收信息
(4)等待客户端连接accept
(5)创建对应客户端socket
(6)使用对应客户端socket收发信息
(7)关闭对应客户端socket
(8)关闭服务端socket
"""
import socket
def get_content_file(file_name):
"""这是获取文件内容的函数"""
try:
with open("/home/python/Desktop/"+file_name, "rb") as f:
content = f.read()
return content
except:
print("输入的文件不存在")
def main():
# 创建服务端socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务端socket的ip和端口
server_socket.bind(("", 6666))
# 设置服务端的监听为被动模式
server_socket.listen(5)
while True:
# 等待客户端的连接
new_client_socket, client_addr = server_socket.accept()
# 客户端传送过来请求要下载的文件名
recv_data = new_client_socket.recv(1024)
file_name = recv_data.decode("utf-8")
# 打开文件进行读操作函数,获取返回值作为内容
file_content = get_content_file(file_name)
# 把内容发送给客户端
new_client_socket.send(file_content)
# 关闭对应客户端socket
new_client_socket.close()
# 关闭服务端socket
server_socket.close()
if __name__ == '__main__':
main()
要求:需编写文件下载器服务端和文件下载器客户端
客户端:
"""
(1)创建客户端socket
(2)连接服务端ip和端口
(3)send消息或recv消息
(4)关闭客户端socket
"""
import socket
def main():
# 创建socket
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取用户输入的服务器ip,port,文件名
server_ip = input("请输入服务器ip:")
server_port = int(input("请输入服务器端口:"))
file_name = input("请输入要下载的文件名:")
# 连接服务器
tcp_client_socket.connect((server_ip, server_port))
# 发送请求的文件名
tcp_client_socket.send(file_name.encode("utf-8"))
# 接收返回的内容写入文件
file_content = tcp_client_socket.recv(1024*1024)
# 内容不为空就写入文件
if file_content:
with open("download_"+file_name, "wb") as f:
f.write(file_content)
# 关闭客户端socket
tcp_client_socket.close()
if __name__ == '__main__':
main()
服务端:
"""
(1)创建服务端socket
(2)绑定服务端ip和端口
(3)把服务端socket设置为listen模式,由主动接收信息改为被动接收信息
(4)等待客户端连接accept
(5)创建对应客户端socket
(6)使用对应客户端socket收发信息
(7)关闭对应客户端socket
(8)关闭服务端socket
"""
import socket
def get_content_file(file_name):
"""这是获取文件内容的函数"""
try:
with open("/home/python/Desktop/"+file_name, "rb") as f:
content = f.read()
return content
except:
print("输入的文件不存在")
def main():
# 创建服务端socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务端socket的ip和端口
server_socket.bind(("", 6666))
# 设置服务端的监听为被动模式
server_socket.listen(5)
while True:
# 等待客户端的连接
new_client_socket, client_addr = server_socket.accept()
# 客户端传送过来请求要下载的文件名
recv_data = new_client_socket.recv(1024)
file_name = recv_data.decode("utf-8")
# 打开文件进行读操作函数,获取返回值作为内容
file_content = get_content_file(file_name)
# 把内容发送给客户端
new_client_socket.send(file_content)
# 关闭对应客户端socket
new_client_socket.close()
# 关闭服务端socket
server_socket.close()
if __name__ == '__main__':
main()
相关文章推荐
- python使用tcp socket 传输文件-服务端,客户端
- 用 TCP 协议写一个客户端和一个服务端,实现上传文件
- 【TCP】使用TCP协议写一个可以上传文件的服务器和客户端。
- 使用Java编写一个简易的本地文件的检索相关字的程序
- 使用FileUtils实现一个简易文件下载器
- 用 TCP 协议写一个客户端和一个服务端,实现上传文件
- Python tcp编程,TCP服务端和TCP客户端代码编写
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 使用nodejs、Python写的一个简易HTTP静态文件服务器
- 使用nodejs、Python写的一个简易HTTP静态文件服务器
- linux下使用boost库编写TCP客户端/服务器程序官方简易教程
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 编写一个简单的TCP服务端和客户端
- [GoLang]GO语言编写的简易TCP服务端、客户端
- 使用Python编写客户端 上传文字or图片至新浪微博
- python socket上传文件的服务端和客户端实现
- 如何使用Python为Hadoop编写一个简单的MapReduce程序
- 如何使用Python为Hadoop编写一个简单的MapReduce程序
- 5、 java 编写程序拷贝一个文件, 尽量使用效率高的方式.
- python socket上传文件的服务端和客户端实现