• 技术文章 >常见问题 >Python常见问题

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

    silencementsilencement2019-07-19 10:21:10原创2648

    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\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连接

    服务端:

    #!/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()
    专题推荐:tcp udp
    上一篇:如何判断Python对象是否为文件对象? 下一篇:解决python3 json数据包含中文的读写问题

    相关文章推荐

    • 深入理解python中的yield• 只需五点,搞定python作用域• Python中eval的用法及注意事项

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网