前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python笔记:select,unix socket

python笔记:select,unix socket

作者头像
超级大猪
发布2019-11-22 09:40:55
6540
发布2019-11-22 09:40:55
举报
文章被收录于专栏:大猪的笔记

1 select 和 socket

在python中可以使用select轻松监听io的变化,自然可以用来对socket做异步监控。下面是一个聊天室的例子:

http://www.cnblogs.com/hazir/p/python_chat_room.html

通过这个例子可以轻松封装一个本地消息机制。

2 unix socket

如果是在Local,可以使用unix socket。将连接改成下面代码即可。然后使用select监听所有的socket。

代码语言:javascript
复制
try:
    os.unlink(self.unix_path)
except OSError:
    if os.path.exists(self.unix_path):
        raise

svcsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
svcsock.bind(self.unix_path)
svcsock.listen(1)

https://pymotw.com/2/socket/uds.html

3 生成器实现

在客户端可以使用生成器替代select。

代码语言:javascript
复制
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.settimeout(30)

# connect to remote host
try:
    sock.connect(self.unix_path)
except:
    raise Exception("UnixSocketClient unable to connect")
while True:
    try:
        data = sock.recv(RECV_BUFFER)
        if data == b'':
            raise Exception("Disconnected from chat server")
        yield data
    except socket.timeout:
        pass
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档