首页 > 代码库 > 聊天室

聊天室

客户端代码:

# 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 = http://www.mamicode.com/sock.recv(100)      #textDisplay.insert(END, data)      #print (sys.stderr, ‘received "%s"‘ % data)        sendBtn = Button(root, text="Send")    sendBtn.bind(<Button-1>, sendMsg)    sendBtn.pack(side = LEFT)    def receiveMsg():      while True:          data = sock.recv(100)          print (sys.stderr, client received "%s" % data)          textDisplay.insert(END, data)          receiveThread = threading.Thread(name=waitForMSG, target=receiveMsg)  receiveThread.start()    root.mainloop()  

服务器端代码:

# 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 = (localhost, 10000)  print (sys.stderr, starting up on %s port %s % server_address)  sock.bind(server_address)    # Listen for incoming connections  sock.listen(1)    while True:      # Wait for a connection      print (sys.stderr, waiting for a connection)      connection, client_address = sock.accept()        try:          print (sys.stderr, connection from, client_address)            # Receive the data in small chunks and retransmit it          while True:              data = connection.recv(16)              print (sys.stderr, received "%s" % data)              if data:                  print (sys.stderr, sending data back to the client)                  connection.sendall(data)              else:                  print (sys.stderr, no data from, client_address)                  break      finally:          # Clean up the connection          connection.close()  

 

聊天室