Heim > Artikel > Backend-Entwicklung > Chatroom-Python-Code-Implementierung
Im Vergleich zum Java-Chatroom kann Python dies auch. Und es geht eleganter. Es wird Ihnen auf jeden Fall gefallen, dass es so viel weniger Python-Sockets verschiedener Streams gibt.
Was den Inhalt im Zusammenhang mit Wissenspunkten betrifft, werde ich hier nicht näher darauf eingehen.
UDP-Modus
Serverseitig
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/7/7' # __Desc__ = 创建一个简单的套接字监听请求 import socket HOST = '192.168.59.255' PORT = 9998 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('',PORT)) print '套接字已启动!' while True: data,addr = s.recvfrom(1024) print addr,str(' : ')+data
Kunde
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/7/7' # __Desc__ = socket的客户端的简单实现 import socket PORT = 9998 HOST = '192.168.59.255' s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) words = raw_input('Client:') while words != 'quit': s.sendto(words,(HOST,PORT)) words = raw_input('Client:') s.close()
Ist es nicht ganz einfach? Wir müssen darauf achten, dass der zweite Parameter des Sockets SOCK_DGRAM ist. Denn dies unterscheidet sich von SOCK_STREAM im TCP-Modus.
TCP-Modus
Serverseitig
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/7/7' # __Desc__ = 简单的tcpsocket的实现 from socket import * from time import ctime HOST = '' PORT = 9999 BUFFERSIZE = 1024 ADDRESS = (HOST,PORT) s = socket(AF_INET,SOCK_STREAM) s.bind(ADDRESS) s.listen(5) while True: print 'Waiting for clients cennect!' tcpclient,addr = s.accept() print 'Connected By ',addr while True: try: data = tcpclient.recv(BUFFERSIZE) except Exception,e: print e.message tcpclient.close() break if not data: print "No Data received!" break senddata = 'Hi,you send me:[%s]%s'%(ctime(),data.encode('utf8')) tcpclient.send(senddata.encode('utf8')) print addr,' Says:',ctime(),data.encode('utf8') tcpclient.close() s.close()
Client
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/7/7' # __Desc__ = 简单的tcp socket客户端的实现 from socket import * class TcpClient: # HOST = 'localhost' PORT = 9999 HOST = '192.168.59.225' BUFFSIZ = 1024 ADDR = (HOST,PORT) def __init__(self): self.client = socket(AF_INET,SOCK_STREAM) self.client.connect((self.HOST,self.PORT)) while True: senddata = raw_input('>>>') if not senddata: print 'Please input some words!\n>>>' continue if senddata == "quit": break self.client.send(senddata.encode('utf8')) recvdata = self.client.recv(self.BUFFSIZ) if not recvdata: break print recvdata.encode('utf8') if __name__ == "__main__": client = TcpClient()
TCP-Modus-Demonstrationsergebnis ( Hinweis: Öffnen Sie zuerst die Serverseite) SimpleTCPServer.py
Warten auf Client-Cennect!Verbunden durch ('192.168.59.225', 63095)('192.168.59.225', 63095) Sagt: Do 7. Juli 16:01:10 2016 Hallo Welt ('192.168.59.225', 63095) Sagt: Do 07.07. 16:01:15 2016 haode Keine Daten empfangen!Warten auf Kundenkontakt!
Client
D:SoftwarePython2python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTcpClient.py
Hallo, ihr Schicken Sie mir:[Do. 07. Juli 16:01:10 2016]Hallo Welt>>>Bitte geben Sie ein paar Wörter ein!>>>>> ;haode
Hallo, du schickst mir:[Thu Jul 07 16:01:15 2016]haode>>>quit
Prozess mit Exit-Code 0 abgeschlossen
Zusammenfassung
Es ist wirklich einfach, einfach TCP oder UDP zu verwenden, aber wenn Sie diese beiden Protokolle besser nutzen möchten, müssen Sie sie sorgfältig entwerfen.
Was ich hier betonen möchte, ist, dass Sie nur auf die angegebenen Parameter achten, wenn TCP und UDP Sockets erstellen.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.
Weitere Artikel zur Chatroom-Python-Code-Implementierung finden Sie auf der chinesischen PHP-Website!