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()  
  • 相关阅读:
    算法竞赛入门经典第一章习题解答
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    程序实现求int类型和double类型的最大最小值范围
    机器狗组装费用 南邮NOJ 1076 优先权队列
    【HDOJ】2604 Queuing
    【HDOJ】1208 Pascal's Travels
    【HDOJ】4857 逃生
    【HDOJ】2510 符号三角形
  • 原文地址:https://www.cnblogs.com/wumac/p/5899924.html
Copyright © 2011-2022 走看看