Heim  >  Artikel  >  Web-Frontend  >  Python-Chatroom-Programm (Basisversion)_python

Python-Chatroom-Programm (Basisversion)_python

不言
不言Original
2018-04-02 16:01:031313Durchsuche

In diesem Artikel wird hauptsächlich die Basisversion des Python-Chatroom-Programms ausführlich vorgestellt, einschließlich der Client- und Serverteile. Interessierte Freunde können darauf verweisen.

Das Beispiel in diesem Artikel wird geteilt Spezifischer Code des Python-Chatroom-Programms als Referenz. Der spezifische Inhalt lautet wie folgt:

Client-Code:

# Filename: socketClient.py 
 
import socket 
import sys 
import threading 
 
# Client GUI 
from tkinter import * 
import Pmw 
 
 
 
# Create a TCP/IP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# Connect the socket to the port where the server is listening 
server_address = ('localhost', 10000) 
print (sys.stderr, 'connecting to %s port %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) 
# Send Button and its callback  
def sendMsg(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(&#39;<Button-1>&#39;, sendMsg)  
sendBtn.pack(side = LEFT) 
 
def receiveMsg(): 
  while True: 
    data = sock.recv(100) 
    print (sys.stderr, &#39;client received "%s"&#39; % data) 
    textDisplay.insert(END, data) 
   
 
receiveThread = threading.Thread(name=&#39;waitForMSG&#39;, target=receiveMsg) 
receiveThread.start() 
 
root.mainloop()

Server- Nebencode:

# Filename: socketServer.py 
 
import socket 
import sys 
 
# Create a TCP/IP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 
# Bind the socket to the port 
server_address = (&#39;localhost&#39;, 10000) 
print (sys.stderr, &#39;starting up on %s port %s&#39; % server_address) 
sock.bind(server_address) 
 
# Listen for incoming connections 
sock.listen(1) 
 
while True: 
  # Wait for a connection 
  print (sys.stderr, &#39;waiting for a connection&#39;) 
  connection, client_address = sock.accept() 
 
  try: 
    print (sys.stderr, &#39;connection from&#39;, client_address) 
 
    # Receive the data in small chunks and retransmit it 
    while True: 
      data = connection.recv(16) 
      print (sys.stderr, &#39;received "%s"&#39; % data) 
      if data: 
        print (sys.stderr, &#39;sending data back to the client&#39;) 
        connection.sendall(data) 
      else: 
        print (sys.stderr, &#39;no data from&#39;, client_address) 
        break 
  finally: 
    # Clean up the connection 
    connection.close()

Verwandte Empfehlungen:

Beobachtermusterstruktur in Python-Programmen schreiben

Das obige ist der detaillierte Inhalt vonPython-Chatroom-Programm (Basisversion)_python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn