python用websockets创建服务端websocket创建客户端

服务端

import asyncio
import json
import base64
import time
import cv2
import numpy as np
import websockets


class WebServer:
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.start_server = self.connect()
        self.clients = []

    async def echo(self, websocket, path):
        self.clients.append(websocket)
        client_ip, client_port = websocket.remote_address
        await websocket.send(json.dumps({"type": "handshake"}))

        while True:
            try:
                recv_text = await websocket.recv()
                with open("aa.txt", "w") as f:
                    f.write(recv_text)
                print(recv_text )
                msg = "收到消息"
                await websocket.send(msg)
                await asyncio.sleep(0.2)

            except websockets.ConnectionClosed:
                print("ConnectionClosed...", path)  # 链接断开
                self.clients.remove(websocket)
                break
            except websockets.InvalidState:
                print("InvalidState...")  # 无效状态
                self.clients.remove(websocket)
                break
            except Exception as e:
                print(e)
                # self.clients.remove(websocket)
                # break

    async def send_msg(self, msg, websocket):
        print('send msg:', msg)
        if websocket is not None:
            await websocket.send(msg)
        await asyncio.sleep(0.2)

    async def broadcast_msg(self, msg):
        for user in self.clients:
            await user.send(msg)

    def connect(self):
        start_server = websockets.serve(self.echo, self.host, self.port)
        print("连接成功!")
        return start_server

    def run(self):
        print("已启动!")
        asyncio.get_event_loop().run_until_complete(self.start_server)
        asyncio.get_event_loop().run_forever()


if __name__ == '__main__':
    ws = WebServer("192.168.6.28", 8000)
    ws.run()

客户端

import json
import websocket


class WebClient:
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.conn = None
        self.flag = False

    def connect(self):
        try:
            url = f"ws://{self.host}:{self.port}"
            self.conn = websocket.create_connection(url)
            self.flag = True
        except Exception as err:
            self.flag = False

    def close(self):
        self.conn.close()

    def recv(self):
        data = self.conn.recv(1024)
        print(data)

    def send(self, data):
        self.conn.send(data)


if __name__ == '__main__':
    host = "192.168.6.28"
    # host = "127.0.0.1"
    port = 8000
    ws = WebClient(host, port)
    if not ws.flag:
        ws.connect()
    with open("bb.txt") as f:
        data = f.read()
    ws.send(data)

相关推荐

  1. pythonwebsockets创建服务websocket创建客户

    2024-02-20 15:00:04       55 阅读
  2. Python WebSocket 客户教程

    2024-02-20 15:00:04       48 阅读
  3. netty udp创建服务+客户

    2024-02-20 15:00:04       26 阅读
  4. netty创建tcp服务+客户

    2024-02-20 15:00:04       22 阅读
  5. springboot实现netty的websocket服务客户

    2024-02-20 15:00:04       56 阅读
  6. C# WebSocket服务

    2024-02-20 15:00:04       30 阅读
  7. 创建socket服务客户--通信(简单入门)

    2024-02-20 15:00:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-20 15:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-20 15:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-20 15:00:04       82 阅读
  4. Python语言-面向对象

    2024-02-20 15:00:04       91 阅读

热门阅读

  1. 基于python+mysql的宠物领养网站系统

    2024-02-20 15:00:04       53 阅读
  2. Python 进阶语法:正则表达式

    2024-02-20 15:00:04       46 阅读
  3. Android app启动优化 2

    2024-02-20 15:00:04       55 阅读
  4. 【算法 - 动态规划】力扣 691. 贴纸拼词

    2024-02-20 15:00:04       55 阅读
  5. typescript type 类型别名详解

    2024-02-20 15:00:04       55 阅读
  6. macad3d解析macad—application,commands,utils

    2024-02-20 15:00:04       41 阅读
  7. unity中UI、shader显示在3D物体前

    2024-02-20 15:00:04       53 阅读
  8. LeetCode 93. 复原 IP 地址

    2024-02-20 15:00:04       56 阅读
  9. yum方式快速安装mysql

    2024-02-20 15:00:04       53 阅读