基于线程的套接字通信 - Python 3.3.3

时间:2014-02-26 15:48:14

标签: python multithreading sockets python-3.3

我不知道如何将线程放到我的套接字程序中。我需要你的帮助。我做了简单的套接字脚本,但后来我卡住了。代码如下:

 import socket,pickle,time,sys
 import threading 

 def receive():
    addr = (host,port)
    ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ss.bind(addr)
    ss.listen(5)
    print('Server is listening')
    clsocket, claddr = ss.accept()
    while 1:
        data = clsocket.recv(1024)
        if not data:
            break
        else:
            data = pickle.loads(data) # Or json.loads(data)
            print("receive data: ", data)
            clsocket.send(mdata)
    clsocket.close()
    ss.close()

 def send():
    addr = (host,port)
    ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientsocket.connect(addr)
    clientsocket.send(mdata)
    print('sended data: ',pickle.loads(mdata))
    data = clientsocket.recv(buf)
    data = pickle.loads(data)
    print("prijate data: ",data)
    ss.close()

 host = 'localhost'
 port=1234
 buf = 1024

 mdata = ['dns','dhcp','firewall']
 mdata = pickle.dumps(mdata)

 receive()
 time.sleep(1)
 send()  

我想制作点对点脚本。此脚本将由三台或更多计算机使用。这台计算机应该随时交换数据,因此它们应该随时准备好。重点是,receive()函数将始终运行,类似于后台线程。其他线程应处理收到的数据。然后应该再次运行receive()线程,或继续。我知道需要中断和多任务处理。我是python中的新手,也是线程。我读过很少的文件,但我发现没有任何问题,包括我的问题。我使用的是Python 3.3.3。

有什么建议吗?还是提示?

最好的问候

的Jozef

0 个答案:

没有答案