導航:首頁 > 編程語言 > 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聊天相關的資料

熱點內容
pdf光子 瀏覽:832
自拍軟體文件夾名稱大全 瀏覽:325
程序員留學移民 瀏覽:49
梁中間部位箍筋加密區 瀏覽:117
頻譜分析pdf 瀏覽:750
樂2怎麼升級安卓70 瀏覽:172
java中獲取日期 瀏覽:506
單片機74hc245 瀏覽:272
美國歷史上的總統pdf 瀏覽:751
程序員脫單實驗室靠不靠譜 瀏覽:459
php中間四位手機號 瀏覽:870
永旺app怎麼樣了 瀏覽:518
壓縮空氣流量計算軟體 瀏覽:650
智慧聊天app怎麼激活 瀏覽:925
一加換機備份到哪個文件夾 瀏覽:737
支撐pdf 瀏覽:417
java空文件夾刪除 瀏覽:588
安卓9跟81有什麼區別 瀏覽:914
n1藍寶書pdf 瀏覽:245
為什麼安卓機拍照那麼丑 瀏覽:696