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()  
  • 相关阅读:
    hibernate二级缓存
    hibernateHQL语句
    hibernate之多对多关系
    SPA项目开发之登录注册
    使用vue-cli搭建SPA项目
    elementUI+nodeJS环境搭建
    Vue路由
    Vue模板语法下集
    网页源码爬取
    Vue模板语法上集
  • 原文地址:https://www.cnblogs.com/wumac/p/5899924.html
Copyright © 2011-2022 走看看