导航:首页 > 编程语言 > python聊天

python聊天

发布时间:2022-01-12 11:54:44

A. python 能抓去微信的聊天记录吗

1. 微信把一个人删除以后,只要对方未删除对方手机聊天记录,对方还能看见我们之前的聊天记录。 2. 微信删除好友是单向的行为,删除好友,你仍会在对方好友列表存在,除非对方主动删除。 3. 删除好友后,对方将从你好友列表删除,你和对方聊天即...

B. python将微信聊天内容复制到word文档

python 有一个第三方库 pywx 你可以去看看,了解一下,然后匹配特定聊天记录的话可以试着用正则试试
望采纳

C. 有关Python编聊天软件

当然有TCP啦,还有那个聊天记录,能不能换种实现方式

D. python多人聊天软件只有最后进入的才能看见别人的几率

1、单或多客户端使用 telnet 登陆服务端 ( 可远程 ) 进行会话
2、服务端实现登陆、注册、退出功能
3、客户端发送的消息会被广播到已经登陆的其他用户界面
4、连接到服务端后,可以执行相应的程序指令!

E. 怎么用python做一个聊天室不带注释,谢谢!

问题太大了兄弟,你怎么不说怎么做个淘宝京东呢。想要做聊天室,就要了解聊天室需要的技术,建议你看下python socket编程相关,一步一步来。比如先做一个无界面一问一答的双人聊天室,然后做实时问答版的,在做多人实时聊天室版,再加上界面不就ok了,之后人多了系统扛不住了,在考虑如何提高系统性能。饭是一口一口吃,路是一步一步走。

F. 求一个能够用Python写一个网络在线聊天工具牛人

250积分?我需要RMB
1 首先要明白聊天工具 = 客户端 + 服务端(所以得写俩)
1.5 规定好数据传输的格式
2 随后你需要指定数据传输的协议:TCP,UDP。。。。。
3 聊天工具往往伴随这文件传输,所以你还需要准备存储文件的数据库
4 你需要一个UI
5 我需要RMB

G. 有关python聊天程序

代码简单,直接看代码吧:

复制代码代码如下:

import socket
import threading
import re
#import Tkinter

def ser():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',33333))
s.listen(1)
conn,addr=s.accept()
while True:
print '[%s:%d] send a message to me: %s'%(addr[0],addr[1],conn.recv(1024))
s.close()
def clt():
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_pattern=re.compile(r'^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$')
while True:
ip=raw_input('Input the Server\'s IPv4 address:')
ip_match=ip_pattern.match(ip)
if ip_match:
break
c.connect((ip,33333))
while True:
sms=raw_input('Input the message you want to send:')
c.sendall(sms)
c.close()
if __name__=="__main__":
ser=threading.Thread(target=ser)
clt=threading.Thread(target=clt)
ser.start()
clt.start()
ser.join()
clt.join()

H. 如何用python编写一个聊天室

1.服务器类

首先需要一个聊天服务器,这里继承asyncore的dispatcher类来实现,代码如下
class ChatServer(dispatcher):
"""
聊天服务器
"""

def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)

def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)

2.会话类

有了服务器类还需要能维护每个用户的连接会话,这里继承asynchat的async_chat类来实现,代码如下:
class ChatSession(async_chat):
"""
负责和单用户通信
"""

def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator('n')
self.data = []
self.name = None
self.enter(LoginRoom(server))

def enter(self, room):
'从当前房间移除自身,然后添加到指定房间'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)

def collect_incoming_data(self, data):
'接受客户端的数据'
self.data.append(data)

def found_terminator(self):
'当客户端的一条数据结束时的处理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()

def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))

3.命令解释器

现在就需要一个命令解释器能够解释用户的命令,例如登录、查询在线用户和发消息等,代码如下:
class CommandHandler:
"""
命令处理类
"""

def unknown(self, session, cmd):
'响应未知命令'
session.push('Unknown command: %sn' % cmd)

def handle(self, session, line):
'命令处理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)

4.房间

接下来就需要实现聊天室的房间了,这里我们定义了三种房间,分别是用户刚登录时的房间、聊天的房间和退出登录的房间,这三种房间都有一个公共的父类,代码如下:
class Room(CommandHandler):
"""
包含多个用户的环境,负责基本的命令处理和广播
"""

def __init__(self, server):
self.server = server
self.sessions = []

def add(self, session):
'一个用户进入房间'
self.sessions.append(session)

def remove(self, session):
'一个用户离开房间'
self.sessions.remove(session)

def broadcast(self, line):
'向所有的用户发送指定消息'
for session in self.sessions:
session.push(line)

def do_logout(self, session, line):
'退出房间'
raise EndSession

class LoginRoom(Room):
"""
刚登录的用户的房间
"""

def add(self, session):
'用户连接成功的回应'
Room.add(self, session)
session.push('Connect Success')

def do_login(self, session, line):
'登录命令处理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)

class ChatRoom(Room):
"""
聊天用的房间
"""

def add(self, session):
'广播新用户进入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room.n')
self.server.users[session.name] = session
Room.add(self, session)

def remove(self, session):
'广播用户离开'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room.n')

def do_say(self, session, line):
'客户端发送消息'
self.broadcast(session.name + ': ' + line + 'n')

def do_look(self, session, line):
'查看在线用户'
session.push('Online Users:n')
for other in self.sessions:
session.push(other.name + 'n')

class LogoutRoom(Room):
"""
用户退出时的房间
"""

def add(self, session):
'从服务器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass

5.服务器端完整代码
#!/usr/bin/python
# encoding: utf-8

from asyncore import dispatcher
from asynchat import async_chat
import socket, asyncore

PORT = 6666 #端口

class EndSession(Exception):
"""
自定义会话结束时的异常
"""
pass

class CommandHandler:
"""
命令处理类
"""

def unknown(self, session, cmd):
'响应未知命令'
session.push('Unknown command: %sn' % cmd)

def handle(self, session, line):
'命令处理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)

class Room(CommandHandler):
"""
包含多个用户的环境,负责基本的命令处理和广播
"""

def __init__(self, server):
self.server = server
self.sessions = []

def add(self, session):
'一个用户进入房间'
self.sessions.append(session)

def remove(self, session):
'一个用户离开房间'
self.sessions.remove(session)

def broadcast(self, line):
'向所有的用户发送指定消息'
for session in self.sessions:
session.push(line)

def do_logout(self, session, line):
'退出房间'
raise EndSession

class LoginRoom(Room):
"""
刚登录的用户的房间
"""

def add(self, session):
'用户连接成功的回应'
Room.add(self, session)
session.push('Connect Success')

def do_login(self, session, line):
'登录命令处理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)

class ChatRoom(Room):
"""
聊天用的房间
"""

def add(self, session):
'广播新用户进入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room.n')
self.server.users[session.name] = session
Room.add(self, session)

def remove(self, session):
'广播用户离开'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room.n')

def do_say(self, session, line):
'客户端发送消息'
self.broadcast(session.name + ': ' + line + 'n')

def do_look(self, session, line):
'查看在线用户'
session.push('Online Users:n')
for other in self.sessions:
session.push(other.name + 'n')

class LogoutRoom(Room):
"""
用户退出时的房间
"""

def add(self, session):
'从服务器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass

class ChatSession(async_chat):
"""
负责和单用户通信
"""

def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator('n')
self.data = []
self.name = None
self.enter(LoginRoom(server))

def enter(self, room):
'从当前房间移除自身,然后添加到指定房间'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)

def collect_incoming_data(self, data):
'接受客户端的数据'
self.data.append(data)

def found_terminator(self):
'当客户端的一条数据结束时的处理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()

def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))

class ChatServer(dispatcher):
"""
聊天服务器
"""

def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)

def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)

if __name__ == '__main__':
s = ChatServer(PORT)
try:
asyncore.loop()
except KeyboardInterrupt:
print

I. 如何用Python编写一个聊天室

#!/usr/bin/python
#encoding:utf-8

fromasyncoreimportdispatcher
fromasynchatimportasync_chat
importsocket,asyncore

PORT=6666#端口

classEndSession(Exception):
"""
自定义会话结束时的异常
"""
pass

classCommandHandler:
"""
命令处理类
"""

defunknown(self,session,cmd):
'响应未知命令'
session.push('Unknowncommand:%sn'%cmd)

defhandle(self,session,line):
'命令处理'
ifnotline.strip():
return
parts=line.split('',1)
cmd=parts[0]
try:
line=parts[1].strip()
exceptIndexError:
line=''
meth=getattr(self,'do_'+cmd,None)
try:
meth(session,line)
exceptTypeError:
self.unknown(session,cmd)

classRoom(CommandHandler):
"""
包含多个用户的环境,负责基本的命令处理和广播
"""

def__init__(self,server):
self.server=server
self.sessions=[]

defadd(self,session):
'一个用户进入房间'
self.sessions.append(session)

defremove(self,session):
'一个用户离开房间'
self.sessions.remove(session)

defbroadcast(self,line):
'向所有的用户发送指定消息'
forsessioninself.sessions:
session.push(line)

defdo_logout(self,session,line):
'退出房间'
raiseEndSession

classLoginRoom(Room):
"""
刚登录的用户的房间
"""

defadd(self,session):
'用户连接成功的回应'
Room.add(self,session)
session.push('ConnectSuccess')

defdo_login(self,session,line):
'登录命令处理'
name=line.strip()
ifnotname:
session.push('UserNameEmpty')
elifnameinself.server.users:
session.push('UserNameExist')
else:
session.name=name
session.enter(self.server.main_room)

classChatRoom(Room):
"""
聊天用的房间
"""

defadd(self,session):
'广播新用户进入'
session.push('LoginSuccess')
self.broadcast(session.name+'hasenteredtheroom.n')
self.server.users[session.name]=session
Room.add(self,session)

defremove(self,session):
'广播用户离开'
Room.remove(self,session)
self.broadcast(session.name+'haslefttheroom.n')

defdo_say(self,session,line):
'客户端发送消息'
self.broadcast(session.name+':'+line+'n')

defdo_look(self,session,line):
'查看在线用户'
session.push('OnlineUsers:n')
forotherinself.sessions:
session.push(other.name+'n')

classLogoutRoom(Room):
"""
用户退出时的房间
"""

defadd(self,session):
'从服务器中移除'
try:
delself.server.users[session.name]
exceptKeyError:
pass

classChatSession(async_chat):
"""
负责和单用户通信
"""

def__init__(self,server,sock):
async_chat.__init__(self,sock)
self.server=server
self.set_terminator('n')
self.data=[]
self.name=None
self.enter(LoginRoom(server))

defenter(self,room):
'从当前房间移除自身,然后添加到指定房间'
try:
cur=self.room
exceptAttributeError:
pass
else:
cur.remove(self)
self.room=room
room.add(self)

defcollect_incoming_data(self,data):
'接受客户端的数据'
self.data.append(data)

deffound_terminator(self):
'当客户端的一条数据结束时的处理'
line=''.join(self.data)
self.data=[]
try:
self.room.handle(self,line)
exceptEndSession:
self.handle_close()

defhandle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))

classChatServer(dispatcher):
"""
聊天服务器
"""

def__init__(self,port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET,socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('',port))
self.listen(5)
self.users={}
self.main_room=ChatRoom(self)

defhandle_accept(self):
conn,addr=self.accept()
ChatSession(self,conn)

if__name__=='__main__':
s=ChatServer(PORT)
try:
asyncore.loop()
exceptKeyboardInterrupt:
print

阅读全文

与python聊天相关的资料

热点内容
怎么查单片机的传输速率 浏览:919
薯仔同学用什么app 浏览:735
python占用cpu资源 浏览:670
pt远程文件夹 浏览:780
水轮机pdf 浏览:379
python37异步 浏览:852
linux系统安装软件命令 浏览:878
程序员简历几页好 浏览:288
游侠下载的游戏都需要解压没 浏览:83
初次认识控制命令完整版 浏览:257
双屏程序员 浏览:801
怎么把两个文件夹放到一个文件夹里面 浏览:547
命令与征服大神宫 浏览:207
php发送短信验证码 浏览:505
前端服务器如何接收http请求 浏览:796
程序员资质查询 浏览:357
程序员被别人开除怎么办 浏览:888
解压视频看一下 浏览:129
android仿知乎日报 浏览:335
为什么前端比安卓手机需求大 浏览:855