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()
客户端在监听服务器的消息采用了多线程的方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。