Python: Socket编程之多线程聊天室

额,好吧,这标题有点大了,就是一个Socket,两个线程,一个是服务器,一个是客户端。
最近公司培训,要写个大富翁的小程序,准备做个服务器版的,先练练手。

#coding = utf-8

import socket
import threading

class UdpServer(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.address = ('127.0.0.1', 10000)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.s.bind(self.address)
        self.stop_flag = False


    def recieve_msg(self):
        (data, addr) = self.s.recvfrom(2048)
        if data:
            print 'recieve data from', addr
            print data

    def run(self):
        while not self.stop_flag:
            self.recieve_msg()

    def stop(self):
        self.stop_flag = True

class UdpClient(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.address = ('127.0.0.1', 10001)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.stop_flag = False

    def send_msg(self):
        data = raw_input()
        if not data:
            print 'Wrong inpiut'
            return
        else:
            self.s.sendto(data, self.address)

    def run(self):
        while not True:
            self.send_msg()


    def stop(self):
        self.stop_flag = True


def main():
    t1 = UdpServer()
    t2 = UdpClient()
    t1.start()
    t2.start()



if __name__ == '__main__':
    main()

Python: Socket编程之多线程聊天室_第1张图片

你可能感兴趣的:(python)