Python聊天室程序(基础版)
本文实例为大家分享了Python聊天室程序的具体代码,供大家参考,具体内容如下
客户端代码:
#Filename:socketClient.py
importsocket
importsys
importthreading
#ClientGUI
fromtkinterimport*
importPmw
#CreateaTCP/IPsocket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Connectthesockettotheportwheretheserverislistening
server_address=('localhost',10000)
print(sys.stderr,'connectingto%sport%s'%server_address)
sock.connect(server_address)
root=Tk()
#textDisplay
textDisplay=Pmw.ScrolledText(root)
textDisplay.pack(expand=1,padx=5,pady=5,side=LEFT)
#textInput
textInput=Pmw.ScrolledText(root)
textInput.pack(expand=1,padx=5,pady=5,side=LEFT)
#SendButtonanditscallback
defsendMsg(event):
message=socket.gethostname()+':'+textInput.get()
#print(sys.stderr,'sending"%s"'%message)
print(message)
sock.sendall(message.encode())
textInput.clear()
#data=sock.recv(100)
#textDisplay.insert(END,data)
#print(sys.stderr,'received"%s"'%data)
sendBtn=Button(root,text="Send")
sendBtn.bind('',sendMsg)
sendBtn.pack(side=LEFT)
defreceiveMsg():
whileTrue:
data=sock.recv(100)
print(sys.stderr,'clientreceived"%s"'%data)
textDisplay.insert(END,data)
receiveThread=threading.Thread(name='waitForMSG',target=receiveMsg)
receiveThread.start()
root.mainloop()
服务器端代码:
#Filename:socketServer.py
importsocket
importsys
#CreateaTCP/IPsocket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Bindthesockettotheport
server_address=('localhost',10000)
print(sys.stderr,'startingupon%sport%s'%server_address)
sock.bind(server_address)
#Listenforincomingconnections
sock.listen(1)
whileTrue:
#Waitforaconnection
print(sys.stderr,'waitingforaconnection')
connection,client_address=sock.accept()
try:
print(sys.stderr,'connectionfrom',client_address)
#Receivethedatainsmallchunksandretransmitit
whileTrue:
data=connection.recv(16)
print(sys.stderr,'received"%s"'%data)
ifdata:
print(sys.stderr,'sendingdatabacktotheclient')
connection.sendall(data)
else:
print(sys.stderr,'nodatafrom',client_address)
break
finally:
#Cleanuptheconnection
connection.close()
客户端在监听服务器的消息采用了多线程的方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。