五分钟搞定Python网络编程实现TCP和UDP连接

python

Python网络编程实现TCP和UDP连接, 使用socket模块, 所有代码在python3下测试通过。

实现TCP

#!/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

Host: www.baidu.com

Connection: close

')

# 接收数据:

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'

', 1)

print(header.decode('utf-8'))

# 把接收的数据写入文件:

with open('sina.html', 'wb') as f:

    f.write(html)

实现UDP连接

服务端:

#!/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)

客户端

#!/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()

以上是 五分钟搞定Python网络编程实现TCP和UDP连接 的全部内容, 来源链接: utcz.com/z/525272.html

回到顶部