码迷,mamicode.com
首页 > 其他好文 > 详细

聊天室

时间:2016-09-23 14:57:04      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

客户端代码:

# 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()  

 

聊天室

标签:

原文地址:http://www.cnblogs.com/wumac/p/5899924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!