Skip to content

Python网络编程实现TCP和UDP连接

标签:网络编程

Python网络编程实现TCP和UDP连接, 使用socket模块, 所有代码在python3下测试通过。 实现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 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import socket # 创建一个socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: s.connect(('www.baidu.com', 80)) # 发送数据: s.send(b'GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: close\r\n\r\n') # 接收数据: buffer = [] while True:     # 每次最多接收1k字节:     d = s.recv(1024)     if d:         buffer.append(d)     else:         break data = b''.join(buffer) # 关闭连接: s.close() header, html = data.split(b'\r\n\r\n', 1) print(header.decode('utf-8')) # 把接收的数据写入文件: with open('sina.html', 'wb') as f:     f.write(html) 实现UDP连接 服务端: 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定端口: s.bind(('127.0.0.1', 9999)) print('Bind UDP on 9999...') while True:     # 接收数据:     data, addr = s.recvfrom(1024)     print('Received from %s:%s.' % addr)     reply = 'Hello, %s!' % data.decode('utf-8')     s.sendto(reply.encode('utf-8'), addr) 客户端: 1 2 3 4 5 6 7 8 9 10 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) for data in [b'Michael', b'Tracy', b'Sarah']:     # 发送数据:     s.sendto(data, ('127.0.0.1', 9999))     # 接收数据:     print(s.recv(1024).decode('utf-8')) s.close()

部分信息收集于网络,若有侵权请联系我们.