广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python epoll聊天室程序
  • 714
分享到

python epoll聊天室程序

聊天室程序python 2023-01-31 02:01:20 714人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

 仿照《how to use linux epoll with python》写的一个聊天室程序,比较简单。 Python版本:2.7.3   #!/usr/bin/python  # -*- coding:utf-8 -*-  impo

 仿照《how to use linux epoll with python》写的一个聊天室程序,比较简单。
Python版本:2.7.3
 
  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*- 
  3.  
  4. import Socket, select 
  5.  
  6. for res in socket.getaddrinfo('0.0.0.0', 1025, socket.AF_INET, socket.SOCK_STREAM): 
  7.     fa, socktype, proto, canonname, sa = res 
  8.  
  9. SockServer = socket.socket(fa, socktype, proto)  
  10. SockServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
  11. SockServer.bind(sa) 
  12. SockServer.listen(5) 
  13.  
  14. epoll = select.epoll() 
  15. epoll.reGISter(SockServer.fileno(), select.EPOLLIN) 
  16.  
  17. try: 
  18.     conns={}; addrs={} 
  19.  
  20.     while True: 
  21.         for fileno, event in epoll.poll(1): 
  22.             if fileno == SockServer.fileno(): 
  23.                 conn, addr = SockServer.accept() 
  24.  
  25.                 epoll.register(conn.fileno(), select.EPOLLIN) 
  26.                 conns[conn.fileno()] = conn 
  27.                 addrs[conn.fileno()] = addr 
  28.  
  29.                 conn.send("--- Welcome to server. Type EXIT to quit. ---\n") 
  30.                 print '[server]: accept connection from %s<%s>' % addr 
  31.  
  32.             elif event & select.EPOLLIN: 
  33.                 message = conns[fileno].recv(1024) 
  34.                 print "%s<%s> say: " % (addrs[fileno][0], addrs[fileno][1]) + message.strip() 
  35.  
  36.                 if b'EXIT' in message: 
  37.                     epoll.modify(fileno, select.EPOLLOUT) 
  38.  
  39.                 for key in conns.keys(): 
  40.                     if key != fileno: 
  41.                         conns[key].send('%s<%s> say: %s' % (addrs[key][0], addrs[key][1], message)) 
  42.  
  43.             elif event & select.EPOLLOUT: 
  44.                 epoll.modify(fileno, 0) 
  45.                 conns[fileno].shutdown(socket.SHUT_RDWR) 
  46.  
  47.             elif event & select.EPOLLHUP: 
  48.                 epoll.unregister(fileno) 
  49.                 conns[fileno].close() 
  50.                 print '[server]: %s<%s> quit.' % addrs[fileno]  
  51.  
  52.                 del conns[fileno] 
  53.                 del addrs[fileno] 
  54.  
  55. finally: 
  56.     epoll.unregister(SockServer.fileno()) 
  57.     epoll.close() 
  58.     SockServer.close() 
程序运行如图:
 

--结束END--

本文标题: python epoll聊天室程序

本文链接: https://www.lsjlt.com/news/186558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python epoll聊天室程序
     仿照《how to use linux epoll with python》写的一个聊天室程序,比较简单。 python版本:2.7.3   #!/usr/bin/python  # -*- coding:utf-8 -*-  impo...
    99+
    2023-01-31
    聊天室 程序 python
  • Python聊天室实例程序分享
    上一篇 我们学习了简单的Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型。本文再通过一个例子来加强一下对 Socket 编程的理解。 ...
    99+
    2022-06-04
    实例 聊天室 程序
  • Python聊天室
    小编心语:锵锵锵!各位看官注意了啊,走过路过表错过!上篇博文主要介绍了基于基于Server-Sent Event的简单在线聊天室,相信不管各位是大牛、小牛还是跟小编一样的小白,可能觉得看得不够过瘾,区区一个小小即时聊天又怎能满足大家的需求。...
    99+
    2023-01-31
    聊天室 Python
  • 如何实现linux聊天室程序
    这篇文章主要讲解了“如何实现linux聊天室程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现linux聊天室程序”吧!代码一:#ifndef&nb...
    99+
    2022-10-19
  • python socket实现聊天室
    本文实例为大家分享了python socket实现聊天室的具体代码,供大家参考,具体内容如下 server端 import socket import json,struct from concurrent.fu...
    99+
    2022-06-02
    python socket 聊天室
  • Python实现web聊天室
    使用Python模块中的select模块实现web聊天室功能select模块Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持sel...
    99+
    2023-01-31
    聊天室 Python web
  • Java NIO怎么实现聊天室程序
    本文小编为大家详细介绍“Java NIO怎么实现聊天室程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java NIO怎么实现聊天室程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。服务端:package&n...
    99+
    2023-06-17
  • Python 聊天程序
    一、套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对...
    99+
    2023-01-31
    程序 Python
  • Python Web聊天室(二)--首页
    今天来完成我们聊天室的首页首先创建appmanage.py startapp chat2.编辑视图文件(chat/views.py)# chat/views.py# 需要导入的包,有些包目前还没有用到,但是以后会用 from django....
    99+
    2023-01-31
    首页 聊天室 Python
  • 微信小程序实现聊天室功能
    本文通过实例为大家分享了微信小程序实现聊天室的具体代码,供大家参考,具体内容如下 1.实现效果展示 2.room.wxml <view class="container"...
    99+
    2022-11-12
  • 微信小程序实现简单聊天室
    本文实例为大家分享了微信小程序实现简单聊天室的具体代码,供大家参考,具体内容如下 cha.js // pages/chat/chat.js // 获取小程序实例 let app ...
    99+
    2022-11-12
  • python简单的多人聊天室
    刚开始学习python,写了一个聊天室练练手。 Server.py import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) ...
    99+
    2023-01-31
    聊天室 简单 python
  • Python怎么实现在线聊天室私聊
    本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更...
    99+
    2023-06-02
  • 微信小程序中如何实现聊天室
    小编给大家分享一下微信小程序中如何实现聊天室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序中如何实现聊天室utils文...
    99+
    2022-10-19
  • Android中基于XMPP协议实现IM聊天程序与多人聊天室
    简单的IM聊天程序 由于项目需要做一个基于XMPP协议的Android通讯软件。故开始研究XMPP。 XMPP协议采用的是客户端-服务器架构,所有从一个客户端发到另一个客户端的...
    99+
    2022-06-06
    xmpp 程序 聊天室 Android
  • Java实现单线程聊天室
    本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下 一. Socket API简介 1. Socket编程 Java.net.Socket类代表一个套接...
    99+
    2022-11-13
  • Java实现多线程聊天室
    本文实例为大家分享了Java实现多线程聊天室的具体代码,供大家参考,具体内容如下 之前呢已经用单线程的方式来实现了聊天室,但其实它的功能并不齐全,下面用多线程来实现,功能会比单线程聊...
    99+
    2022-11-12
  • 小小聊天室Python代码实现
    相对于Java方式的聊天室,Python同样可以做得到。而且可以做的更加的优雅。想必少了那么多的各种流的Python Socket,你一定会喜欢的。 至于知识点相关的内容,这里就不多说了。 UDP方式 服...
    99+
    2022-06-04
    聊天室 代码 Python
  • 微信小程序如何实现简单聊天室
    这篇文章主要介绍了微信小程序如何实现简单聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现简单聊天室文章都会有所收获,下面我们一起来看看吧。cha.js// pages/chat/...
    99+
    2023-06-08
  • python3-001-多线程简单聊天室
            这次代码为python3编写,并且使用网络调试助手、与python3聊天室程序进行通信测试。1、先放干货代码,如下: 1 from socket import * 2 from threading import Th...
    99+
    2023-01-31
    多线程 聊天室 简单
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作