Форум сайта python.su
есть задача написать демон, который будет слушать порт одной програмки и адекватно реагировать на события. Как слушать порт и реагировать на события и с горем пополам разобрался, но теперь стала задача посылать комманду через этот порт в программку и получать ответ о выполнении. Причем кол-во клиентов, которые могут отращаться через нашего демона в программку может быль большим, и каждому нужно отправить ответ на его запрос.
вообщем вот код:
#!/bin/env python3.1
HOST, PORT = "", 2039
global msconn
import socket
import threading, _thread
import socketserver
class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
while (1):
msconn.send("test")
data = serv.recv(1024)
self.request.send(data)
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
def server ():
global HOST, PORT
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
server_thread = threading.Thread(target=server.serve_forever)
server_thread.setDaemon(True)
server_thread.run()
def server_mapi():
global msconn
msconn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
msconn.connect((MANAGER,MANAGERPORT))
msconn.send("Action: Login\r\n")
msconn.send("UserName: " + USERNAME + "\r\n")
msconn.send("Secret: " + SECRET + "\r\n\r\n");
if __name__ == "__main__":
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
server_thread = threading.Thread(target=server.serve_forever)
server_thread.setDaemon(True)
server_thread.run()
_thread.start_new_thread(server_mapi,())
----------------------------------------
Exception happened during processing of request from ('94.248.3.135', 10854)
Traceback (most recent call last):
File "/usr/local/lib/python3.1/socketserver.py", line 558, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python3.1/socketserver.py", line 320, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python3.1/socketserver.py", line 614, in __init__
self.handle()
File "./TCPServer.py", line 20, in handle
msconn.send("aaa")
NameError: global name 'msconn' is not defined
----------------------------------------
Офлайн
добавь: global msconn
в функцию где используешь эту переменную ( в ф-ю отправки сообщения “тест” )
Офлайн
не помогает ((
Офлайн
Офлайн