我是靠谱客的博主 典雅水杯,这篇文章主要介绍网络编程之使用TCP编写简易的文件下载器一、TCP客户端的实现二、TCP服务器的实现三、案例:简易的文件下载器,现在分享给大家,希望可以做个参考。

网络编程--TCP

  • 一、TCP客户端的实现
  • 二、TCP服务器的实现
  • 三、案例:简易的文件下载器

一、TCP客户端的实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
""" 客户端 """ 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服务器的实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
""" 服务器 """ 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()

三、案例:简易的文件下载器

  1. 客户端实现
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    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()
  2. 服务器端实现
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    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编写简易内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部