本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下

服务端

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/7/27 15:34

# @File : Server.py

"""

聊天室服务端

"""

import socket,select

host=''

port=7799

addr=(host,port)

inputs=[]

members={}

#配置服务端

def start_Server():

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(addr)

server.listen(5)

return server

#返回聊天室成员列表

def show_members(w):

name_list=[]

for i in w:

name_list.append(w[i])

return name_list

#处理新的成员

def new_member(server):

client,addr=server.accept()

print('欢迎进入聊天室 ,%s,%s' % (client,addr))

try:

client.send('请输入名字')

name=client.recv(1024)

inputs.append(client)

members[client]=name

names='其它用户%s'% (show_members(members))

client.send(names)

except Exception,e:

print(e)

#正式启动服务端

def server_run():

server=start_Server()

print 'start'

inputs.append(server)

while True:

rs,ws,es=select.select(inputs,[],[])

for temp in rs:

if temp is server:

new_member(temp)

else:

disConnect=False

try:

data=temp.recv(1024)

data=members[temp]+'说'+data

except socket.error:

data=members[temp]+'离开'

disConnect=True

if disConnect:

inputs.remove(temp)

print data

for other in inputs:

if other!=server and other!=temp:

try:

other.send(data)

except Exception,e:

print(e)

del members[temp]

else:

print data

for other in inputs:

if other!=server and other!=temp:

try:

other.send(data)

except Exception,e:

print(e)

if __name__ == '__main__':

server_run()

客户端

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2017/7/27 15:34

# @File : Client.py

"""

聊天室客户端

"""

import socket

import select

import threading

host='127.0.0.1'

port=7799

addr=(host,port)

#配置连接

def connect():

client=socket.socket()

client.connect(addr)

return client

#显示用户列表

def show_member(s):

my=[s]

while True:

rs,ws,es=select.select(my,[],[])

if s in rs:

try:

print s.recv(1024)

except socket.error:

print 'socket is error'

exit()

#进行对话

def talk(s):

while True:

try:

info=raw_input('>>>')

except Exception:

print 'can\'t input'

exit()

try:

s.send(info)

except Exception,e:

print e

exit()

#主函数

def main():

client=connect()

t=threading.Thread(target=show_member,args=(client,))

t.start()

t1=threading.Thread(target=talk,args=(client,))

t1.start()

if __name__ == '__main__':

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

基于python的网络聊天室论文_Python基于Socket实现简单聊天室相关推荐

  1. 基于python的网络爬虫系统论文_python网络爬虫毕业论文

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. 基于python的股票程序化交易论文_基于Python工具的股票量化投资策略研究

    2019 年第 07 期 20 世 纪 80 年代, 一 些 投 资 者 开 始 利用 计 算 机 研究金 融 数据 , 并 初显 成 效 . 20 世 纪 末 , 投 资 者 把 计 算 机 技术 ...

  3. python socket 网络聊天室_Python基于Socket实现简单聊天室

    本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...

  4. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

    在现阶段大数据的时代中,想要实现对数据的获取和分析,要先具备足够的数据源,网络爬虫技术就为其数据获取提供了良好的条件,且还能够实现对数据源的目的性采集. 在网络爬虫技术应用中,Python 脚本语言的 ...

  5. python爬虫论文摘要怎么写_毕业论文-基于Python 的网络爬虫.docx

    北京林业大学本科毕业论文(设计) PAGE \* MERGEFORMATI 基于Python的网络爬虫 摘要 随着计算机技术的不断发展,新的编程语言层出不穷,Python,Html正是其中的佼佼者.相 ...

  6. 爬虫技术python流程图_基于Python的网络爬虫技术研究

    基于 Python 的网络爬虫技术研究 王碧瑶 [摘 要] 摘要:专用型的网络爬虫能够得到想要的返回结果 , 本文就以拉勾网作 为例子 , 对基于 Python 的网络爬虫技术进行研究和分析. [期刊 ...

  7. python网络爬虫的流程图_基于Python的网络爬虫的设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...

  8. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  9. 开题报告———基于Python的网络爬虫的电影网站设计与实现

    摘要 当代万维⽹和互联⽹技术发展迅猛,有时候在浏览某些⽹页.相册或者某些图⽚⽹站时,发现很多图⽚都很喜欢想要下载到本地,但是数量较多时操作会过于繁琐.此爬⾍软件是为了使⽤户能够便捷的获取并下载某些⽹站 ...

  10. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计

    程序设计 ●Program Design 基于 Python的网络爬虫程序设计 网络 信 息量 的迅 猛 增 长,对 如何从海量的信息中准确的搜索 到用户需要的信息提 出了极大的 挑战.网络爬 虫具有 ...

最新文章

  1. @ngrx入坑angular的schema,爽的一逼!
  2. 学技术靠网络还是靠现实
  3. C/C++基础语法,赶紧收藏好哟~
  4. 贝壳找房技术总监肖鹏:高速成长下的技术团队怎么带?
  5. 树形结构 —— 并查集 —— 带权并查集
  6. @JsonFormat与@DateTimeFormat注解的使用
  7. opencv 图像属性
  8. Pandas 文本数据方法 repeat( )
  9. asp.net扩展Forms验证
  10. python层次聚类选择类别_什么是聚类分析?聚类分析方法的类别
  11. DLL导出类避免地狱问题的完美解决方案
  12. 学习官方SSIS教程的错误总结
  13. wallhaven怎么下原图_Wallhaven Top高清壁纸抓取工具
  14. 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)
  15. TreeMap集合怎样依照Value进行排序
  16. Word文档中粘贴图片不显示
  17. 2019最新iOS面试题及答案
  18. 夜半加班之附魔吃药篇!
  19. 由己方的a网站跳转第三方的b网站
  20. iOS App由生到死的过程

热门文章

  1. MAC关闭SIP:system integrity protection is on, some features will not be available
  2. Javascript构建Bingo卡片游戏
  3. U盘中病毒后文件变为屏幕保护程序恢复方法
  4. win10专业版和企业版的区别
  5. 串口异步通信——时序宽度测试
  6. CentOS8 dnf软件包管理配置
  7. 2. 详解 QEMU 架构
  8. oracle 逗号连接表是相当于什么
  9. IE 提示 当前安全设置不允许下载该文件
  10. kthreaddk病毒查杀记录