Python でマルチプロセス UDP サーバーを作成し、クラスのプロセスごとに 1 つのポートをリッスンしたい:
processListener.py
:
import multiprocessing
import socket
class processListener(multiprocessing.Process):
def __init__(self):
multiprocessing.Process.__init__(self)
self.data = None
def run(self):
self.startServer()
return
def startServer(self):
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ('', self.port)
udpSocket.bind(address)
while 1:
data, client = udpSocket.recvfrom(1024)
print self.data, '>>>', data.strip()
self.data = data.strip()
udpSocket.sendto('ACK', client)
return
私のメインファイルはserver.py
次のとおりです。
from processListener import *
# Variable Definition
port = 4000
# Sever Initialization
if __name__ == '__main__':
process = processListener()
process.port = port
process.start()
while True:
command = raw_input()
if command == 'showdata':
print 'Last Data is:', process.data
サーバーが実行されていて、UDP から localhost:4000 にデータを送信する場合
shell$
None >>> Test Data
しかし、コマンドを使用すると問題が発生しますshowdata
shell$
None >>> Test Data
showdata
Last Data is: None