zoukankan      html  css  js  c++  java
  • python的socket编程

    socket主要用于长连接 

    简单DEMO:

    Server端:

    import socket
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(('0.0.0.0', 8000))
    server.listen()
    sock, addr = server.accept()
    
    # 获取从客户端发送的数据
    data = sock.recv(1024)
    print(data.decode("utf8"))
    
    sock.send("Hi,{}".format(data.decode("utf8")).encode("utf8"))
    
    server.close()
    sock.close()

    client端:

    import socket
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('127.0.0.1', 8000))
    client.send("feng".encode("utf8"))
    data = client.recv(1024)
    print(data.decode("utf8"))
    client.close()

    结果:

    server:  feng

    client:  Hi,feng

    简易聊天室:

    Server端:

    import socket
    import threading
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(('0.0.0.0', 8000))
    server.listen()
    
    
    def handle_sock(sock, addr):
        data = sock.recv(1024)  #
        print(data.decode("utf8"))
        re_data = input()
        sock.send(re_data.encode("utf8"))  #
    
    
    # 获取从客户端发送的数据
    # 一次获取1k数据
    while True:
        sock, addr = server.accept()
    
        # 用线程去处理新接收的连接(用户)
        client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
        client_thread.start()

    client端:

    import socket
    
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('127.0.0.1', 8000))
    
    while True:
        re_data = input()
        client.send(re_data.encode("utf8"))  #
    
        data = client.recv(1024)  #
        print(data.decode("utf8"))

    结果:

    多个client可以给server发消息

  • 相关阅读:
    RabbitMQ系列2 RabbitMQ安装与基础入门
    RabbitMQ系列1 什么是MQ
    数据结构与算法系列1之数组介绍与动态数组实现
    数据结构与算法系列3之从内存角度分析数组与链表的区别
    Dubbo学习
    Can't locate Pod/Text.pm问题分析及解决
    “画饼”陷阱论
    自述
    结构光、立体视觉、ToF三种3D传感原理
    游侠郭解是如何被无脑粉坑死的?
  • 原文地址:https://www.cnblogs.com/lisen10/p/10829889.html
Copyright © 2011-2022 走看看