Найти - Пользователи
Полная версия: вызвать функцию
Начало » Python для новичков » вызвать функцию
1
ssh2010
есть задача написать демон, который будет слушать порт одной програмки и адекватно реагировать на события. Как слушать порт и реагировать на события и с горем пополам разобрался, но теперь стала задача посылать комманду через этот порт в программку и получать ответ о выполнении. Причем кол-во клиентов, которые могут отращаться через нашего демона в программку может быль большим, и каждому нужно отправить ответ на его запрос.

вообщем вот код:

#!/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,())
на первом этапе мне нужно сделать так, чтоб при подключении телнетом на айпишник компа, где запущена эа прога выдавало сообщение “test”.

но в результате пишет это:
----------------------------------------
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
----------------------------------------
я понимаю что это значит, но как исправить?
o7412369815963
добавь: global msconn
в функцию где используешь эту переменную ( в ф-ю отправки сообщения “тест” )
ssh2010
не помогает ((
o7412369815963
используй xmlrpc - http://docs.python.org/3.1/library/xmlrpc.server.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB