介绍
小编给大家分享一下Python基于套接字如何实现简单聊天室,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
Python的优点有哪些
1,简单易用,与C/c++、Java、c#等传统语言相比,Python对代码格式的要求没有那么严格;2,Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3,Python面向对象,能够支持面向过程编程,也支持面向对象编程;4,Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5,Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。
具体内容如下
服务端
# !/usr/bin/env Python #,- *安康;编码:utf-8 - * - #,@Time ,: 2017/7/27 15:34 #,@File ,: Server.py , “““ 聊天室服务端 “““ , import 插座,选择 , 主机=& # 39;& # 39; 端口=7799 addr=(主机、端口) , 输入=[] 成员={} , #配置服务端 def start_Server (): 服务器才能=socket.socket (socket.AF_INET socket.SOCK_STREAM) server.bind才能(addr) server.listen才能(5) return 才能;服务器 , , #返回聊天室成员列表 def show_members (w): name_list才能=[] for 才能小姐:w:拷贝 ,,,name_list.append (w[我]) return name_list才能 , , #处理新的成员 def new_member(服务器): 客户端,才能addr=server.accept () 打印才能(& # 39;欢迎进入聊天室,,% s, % & # 39;, %,(客户端,addr)) 尝试才能: ,,,client.send(& # 39;请输入名字& # 39;) ,,,的名字=client.recv (1024) ,,,inputs.append(客户端) ,,,[客户]=成员的名字 , ,,,的名字=& # 39;其它用户% & # 39;%,(show_members(成员) ,,,client.send(名字) except 才能;例外,e: ,,,印刷(e) , , #正式启动服务端 def server_run (): 服务器才能=start_Server () print & # 39;才能开始# 39; inputs.append才能(服务器) while 才能正确的: ,,,rs, ws, es=select.select(输入、[][]) ,,,for temp rs:拷贝 ,,,,,if temp is 服务器: ,,,,,,,new_member(临时) ,,,,,其他的: ,,,,,,断开=False ,,,,,,,试一试: ,,,,,,,,,data=https://www.yisu.com/zixun/temp.recv (1024) data=成员(临时)+‘说’+数据 除了socket.error: data=成员(临时)+ '离开的 断开=True 如果断开连接: inputs.remove(临时) 打印数据 其他的输入: 如果其他!=服务器和其他!=temp: 试一试: other.send(数据) 除了例外,e: 打印(e) 德尔成员(临时) 其他: 打印数据 其他的输入: 如果其他!=服务器和其他!=temp: 试一试: other.send(数据) 除了例外,e: 打印(e) if __name__==癬_main__”: server_run ()
客户端
# !/usr/bin/env python #,- *安康;编码:utf-8 - * - #,@Time ,: 2017/7/27 15:34 #,@File ,: Client.py , “““ 聊天室客户端 “““ , , import 套接字 import 选择 import 线程 主机=& # 39;127.0.0.1 # 39; 端口=7799 addr=(主机、端口) , #配置连接 def 连接(): 客户端才能=socket.socket () client.connect才能(addr) return 才能;客户端 , , #显示用户列表 def show_member (s): 我才能=[s] while 才能正确的: ,,,rs, ws, es=select.select(我,[],[]) ,,,if s rs:拷贝 ,,,,,试一试: ,,,,,,,print s.recv (1024) ,,,,,except socket.error: ,,,,,,,print & # 39; socket is 错误# 39; ,,,,,,,退出() , #进行对话 def 谈话(s): ,,,while 正确的: ,,,,,试一试: ,,,,,,,信息=raw_input(& # 39;在祝辞祝辞& # 39;) ,,,,,except 例外: ,,,,,,,print & # 39;可以\ & # 39;t 输入# 39; ,,,,,,,退出() ,,,,,试一试: ,,,,,,,s.send(信息) ,,,,,except 例外,e: ,,,,,,,print e ,,,,,,,退出() , #主函数 def main (): 客户端才能=连接() t=才能threading.Thread(目标=show_member args=(客户机)) t.start才能() t1=才能threading.Thread(目标=说话,arg游戏=(客户机)) t1.start才能() , if __name__ ==, & # 39; __main__ # 39;: 以前,,main ()Python基于套接字如何实现简单聊天室