首页 > 其他分享 >asyncore用法:

asyncore用法:

时间:2023-07-06 11:36:25浏览次数:43  
标签:asyncore socket self 用法 dispatcher def 客户端

asyncore用法

使用asyncore模块创建域套接字的示例:

import asyncore
import socket

class EchoServer(asyncore.dispatcher):

    def __init__(self, address):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_UNIX, socket.SOCK_STREAM)
        self.bind(address)
        self.listen(1)

    def handle_accept(self):
        # 接受客户端连接请求
        client_socket, client_address = self.accept()
        print("接受来自 %s 的连接" % client_address[0])

        # 创建处理客户端请求的处理器
        EchoHandler(client_socket)

class EchoHandler(asyncore.dispatcher_with_send):

    def handle_read(self):
        data = self.recv(1024)
        if data:
            # 处理接收到的数据
            print("接收到数据:%s" % data.decode())

            # 将数据发送回客户端
            self.send(data)
        else:
            # 客户端断开连接
            self.close()

# 创建域套接字服务器并运行
server = EchoServer('/tmp/echo.sock')
asyncore.loop()

此示例展示了如何使用asyncore模块创建一个简单的域套接字服务器。服务器创建了一个EchoServer类,继承自asyncore.dispatcher,用于监听和接受客户端连接。当有客户端连接请求时,会创建一个EchoHandler类的实例处理该连接。

EchoHandler类继承自asyncore.dispatcher_with_send,它重写了handle_read方法用于处理客户端发送过来的数据。当接收到数据时,会打印出来,并将数据发送回客户端。

在主程序中,创建了一个EchoServer实例并指定域套接字的地址(例如'/tmp/echo.sock')。然后调用asyncore.loop()启动事件循环,等待客户端连接和数据交换。

请注意,此示例仅演示了基本的域套接字服务器的实现方式,并没有处理异常、并发等情况。实际使用时需要根据需求进行适当的改进。

 

import asyncore
import socket

class EchoClient(asyncore.dispatcher_with_send):

    def __init__(self, address):
        asyncore.dispatcher_with_send.__init__(self)
        self.create_socket(socket.AF_UNIX, socket.SOCK_STREAM)
        self.connect(address)

    def handle_connect(self):
        print("已连接到服务器")

    def handle_close(self):
        print("与服务器断开连接")
        self.close()

    def handle_read(self):
        data = self.recv(1024)
        if data:
            # 处理接收到的数据
            print("接收到数据:%s" % data.decode())
        else:
            # 服务器断开连接
            self.close()

# 创建域套接字客户端并连接到服务器
client = EchoClient('/tmp/echo.sock')
asyncore.loop()

 

标签:asyncore,socket,self,用法,dispatcher,def,客户端
From: https://www.cnblogs.com/sunbines/p/17531685.html

相关文章

  • mybatis association 的用法(完整版)
    packagecom.tuling.tulingmall.domain;importcom.tuling.tulingmall.model.UmsMember;importcom.tuling.tulingmall.model.UmsMemberLevel;importlombok.Data;@DatapublicclassPortalMemberInfoextendsUmsMember{privateUmsMemberLevelumsMemberLevel;......
  • QT 记Sqlite用法
    一、在.pro文件添加QT+=coreguisql二、头文件#include<QSqlDatabase>#include<QSqlError>#include<QSqlQuery> 三、用法1//以写的查询为例2QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");34db.setDatabaseNa......
  • QT 记串口的用法
    QSerialPort用法一、在.pro文件添加serialportQT+=coreguiserialport二、头文件#include<QSerialPort>#include<QSerialPortInfo>三、开启串口1voidWidget::on_pushButton_clicked()//自己写的按钮为例2{3QSerialPortInfoinfo;4QLis......
  • jq命令用法总结
    简介如果说要给Linux文本三剑客(grep、sed、awk)添加一员的话,我觉得应该是jq命令,因为jq命令是用来处理json数据的工具,而现如今json几乎无所不在!网上的jq命令分享文章也不少,但大多介绍得非常浅,jq的强大之处完全没有介绍出来,所以就有了这篇文章,安利一下jq这个命令。基本用法格式......
  • js正则表达式replace中参数为$1、$2、...、$99、函数等用法以及常用的正则表达式
    js正则表达式replace中参数为$1、$2、...、$99、函数等用法以及常用的正则表达式原文链接:https://blog.csdn.net/sxww_zyt/article/details/130258920示例:时间格式进行转换显示。//202007011927122020-07-0119:27:12getdateString(datastr){letpattern=/(\d{......
  • 直播平台搭建源码,multiple-select 单选框多选框的用法
    直播平台搭建源码,multiple-select单选框多选框的用法         <divclass="row">            <divclass="col-sm-11">              <divclass="input-group">            ......
  • 16-1 文件处理三剑客置awk基本用法 16-2()16-3()
    一、awk BEGIN[root@centos8~]#awk'BEGIN{print"hello,awk"}'[root@centos8~]#awk-F:'{print$1":"$3}'/etc/passwd[root@centos8~]#df|awk-F"[[:space:]]+|%"'{print$5}'|sort-nr|head-n......
  • React props 用法
    ComponentsletyousplittheUIintoindependent,reusablepieces,andthinkabouteachpieceinisolation.Thispageprovidesanintroductiontotheideaofcomponents.Youcanfinda detailedcomponentAPIreferencehere.Conceptually,componentsareli......
  • linux grep基本用法--九五小庞
    通过此语句可以查询一个文件或者当前目录下所有文件中包含exception和error的文件grep-E-i"((exception)|(error))"*1.查找文件中是否存在指定的信息:grep<查找信息><文件名>-bash-4.1$grepexceptionerror-2015-12-29.log17:49:13.869[http-/192.168.0.80:8080-12]......
  • ASP.NET Core 6框架揭秘实例演示[41]:跨域资源的共享(CORS)N种用法
    同源策略是所有浏览器都必须遵循的一项安全原则,它的存在决定了浏览器在默认情况下无法对跨域请求的资源做进一步处理。为了实现跨域资源的共享,W3C制定了CORS规范。ASP.NET利用CorsMiddleware中间件提供了针对CORS规范的实现。(本文提供的示例演示已经同步到《ASP.NETCore6框架揭......