zoukankan      html  css  js  c++  java
  • 聊天室

    客户端代码:

    # 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('<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()  
  • 相关阅读:
    Android如何实现超级棒的沉浸式体验
    这次聊聊Promise对象
    svn add文件名包含@符号的解决方案
    证明3|n(n+1)(2n+1)
    Xcode迁移工程常见问题
    Multiple build commands for output file
    python中descriptor的应用
    xcode快捷键
    Cycript
    令assignment操作符返回一个reference to *this
  • 原文地址:https://www.cnblogs.com/wumac/p/5899924.html
Copyright © 2011-2022 走看看