サーバーから受信した特定の文字列メッセージへの応答として、メッセージ (文字列) をサーバー (サーバー A など) に送信しようとしています。サーバーにメッセージを送信するためにクライアント接続を使用しました。上記のサーバーからメッセージを受信するために、ソケットモジュールを使用して独自のサーバー (サーバー B など) を作成しました。特定のメッセージを受信した場合、クライアントはそのサーバー A にメッセージを送信する必要があります。クライアントとサーバーの両方が同時に動作できるように、スレッドを使用しました。
これが私のクライアント スクリプト (socket1.py) です。
import socket
import time
s = socket.socket()
s2 = socket.socket()
class MyClient():
def __init__(self):
self.s=socket.socket()
def start(self):
self.s.connect(('localhost',6000))
self.s.settimeout(1000)
self.s.send('JOIN#')
while True:
if self.s.gettimeout():
break
def move(self):
self.s.send('LEFT#')
def close(self):
self.s.close()
def socStart():
global s,s2
s.connect(('localhost',6000))
#s2.connect(('localhost',6000))
s.send('JOIN#')
#time.sleep(10)
#s.send('DOWN#')
#s.close()
def move():
global s1
s1.send('DOWN#')
def close():
global s,s2
s.close()
#s2.close()
これが私のサーバースクリプトです(server1.py)
import socket
class MyServer():
def __init__(self):
self.s= socket.socket()
def serStart(self):
self.s.bind(('localhost',7000))
#self.s.settimeout(30)
self.s.listen(5)
self.started = False
while True:
self.c, self.addr = self.s.accept()
self.msg = self.c.recv(1024)
if self.msg[0] == 'S':
self.started = True
print self.addr, '>>', self.msg
self.c.close()
if self.s.gettimeout():
break
self.s.close()
def getStarted(self):
return self.started
これは、socket1 と server1 モジュールの両方でスレッドを使用したスクリプトです。
import threading
import datetime
import socket1
import server1
import time
class ThreadClass(threading.Thread):
def initialize(self,client,server):
self.client = client
self.server = server
def run(self):
self.client.start()
if self.server.getStarted():
self.client.move()
self.client.close()
class ThreadServer(threading.Thread):
def initialize(self, client, server):
self.client = client
self.server = server
def run(self):
self.server.serStart()
client = socket1.MyClient()
server = server1.MyServer()
t = ThreadClass()
tS=ThreadServer()
t.initialize(client, server)
tS.initialize(client, server)
t.start()
tS.start()
サーバークラスは変更されますが、それは True に変数を開始しましたが、move メソッドは では機能しませんThreadClass
。Python で外部サーバーを使用して、そのようなイベントのトリガーと応答を実行するにはどうすればよいですか?