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

2024-04-18 23:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

 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()函数将始终运行,类似于backround thread。其他线程应该处理接收到的数据。然后应该再次运行receive()线程,或者继续。我知道有必要的干扰和多任务处理。我是python的新手,线程也是。我读了一些文件,但什么也没发现,包括我的问题。我使用的是python3.3.3。你知道吗

有什么建议吗?还是暗示?你知道吗

致以最诚挚的问候

约泽夫


Tags: 脚本sendhostdatasocket线程sspickle