网络编程--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
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
32import 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()
- 服务器端实现复制代码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
44import 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编写简易内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复