我是靠谱客的博主 典雅水杯,最近开发中收集的这篇文章主要介绍网络编程之使用TCP编写简易的文件下载器一、TCP客户端的实现二、TCP服务器的实现三、案例:简易的文件下载器,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
网络编程--TCP
- 一、TCP客户端的实现
- 二、TCP服务器的实现
- 三、案例:简易的文件下载器
一、TCP客户端的实现
"""
客户端
"""
import socket
def main():
"""客户端"""
# 1.创建tcp的套接字
tcp_clinet_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.链接服务器
server_ip = input('请输入服务器的ip:')
server_port = int(input('请输入服务器的port:'))
server_addr = (server_ip,server_port)
tcp_clinet_socket.connect(server_addr)
# 3.收发消息
send_data = input('请输入发送的消息:')
tcp_clinet_socket.send(send_data.encode('gbk'))
# 4.关闭套接字
tcp_clinet_socket.close()
if __name__ == '__main__':
main()
二、TCP服务器的实现
"""
服务器
"""
import socket
def main():
"""服务器"""
# 1.买个手机(创建一个tcp的套接字 socket)
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.装个手机卡(绑定本地信息 bind)
tcp_server.bind(("", 7890))
# 3.将手机设置为响铃模式(将默认的套接字由主动变为被动 listen)
tcp_server.listen(128)
print('-------1--------')
# 4.等待别人打电话(等待客户端的链接 accept)
new_clinet_socket, clinetAddr = tcp_server.accept()
print('-------2--------')
print(clinetAddr)
# 接受客户端发过来的请求
clinet_data = new_clinet_socket.recv(1024)
print(clinet_data)
# 给客户端回一个消息
new_clinet_socket.send('12345'.encode('gbk'))
# 关闭套接字
new_clinet_socket.close()
tcp_server.close()
if __name__ == '__main__':
main()
三、案例:简易的文件下载器
- 客户端实现
import socket def main(): """文件下载客户端""" # 1.创建套接字 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.获取服务器的ip和prot server_ip = '192.168.1.10' server_prot = 8080 # 3.连接服务器 client.connect((server_ip, server_prot)) # 4.获取要下载的文件名 data_file = input("请输入要下载的文件名:") # 5.将文件名传递给服务器 client.send(data_file.encode('utf-8')) # 6.接受服务器传来的数据 data = client.recv(1024) if data: # 7.保存服务器传来的数据 with open('new_' + data_file, 'wb') as f: f.write(data) print('下载成功') else: print('没有这个文件下载失败') # 8.关闭套接字 client.close() if __name__ == '__main__': main()
- 服务器端实现
import socket def send_to_client(new_client, clientaddr): """获取客户端的需求,打开文件给客户端发文件内容""" # 获取客户端的信息 1024=1k 1024*1024=1M file_name = new_client.recv(1024).decode('gbk') print('%s客户要下载%s文件' % (clientaddr, file_name)) file_context = None # 打开文件 try : f = open(file_name, 'rb') file_context = f.read() f.close() except: print("没有%s文件打开失败" % file_name) if file_context: # 给客户端回信息 直接发的是二进制类型 new_client.send(file_context) print("%s传输成功" % file_name) # 关闭套接字 new_client.close() def main(): """文件下载服务器""" # 创建套接字 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定ip和prot server.bind(('192.168.1.10', 8080)) # 设置成监听模式 listen 128这个值是指同一时刻访问服务器可接受的多与少,但是由于操作系统不同所以多少是不同的,一般默认为128 server.listen(128) # 让客户端多次下载 while True: # 等待用户连接 accept new_client, clientaddr = server.accept() # 获取客户端的需求给客户端发文件 send_to_client(new_client, clientaddr) # 关闭服务器套接字 server.close() if __name__ == '__main__': main()
最后
以上就是典雅水杯为你收集整理的网络编程之使用TCP编写简易的文件下载器一、TCP客户端的实现二、TCP服务器的实现三、案例:简易的文件下载器的全部内容,希望文章能够帮你解决网络编程之使用TCP编写简易的文件下载器一、TCP客户端的实现二、TCP服务器的实现三、案例:简易的文件下载器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复