Простой Python-сервер - PullRequest
       2

Простой Python-сервер

0 голосов
/ 10 ноября 2010

Как мне запустить простой Python-сервер, который позволит мне подключаться к сокетам из какого-то внешнего источника?

Я пробовал:

import SocketServer

class MyUDPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        data = self.request[0].strip()
        socket = self.request[1]
        print "%s wrote:" % self.client_address[0]
        print data
        socket.sendto(data.upper(), self.client_address)

if __name__ == "__main__":
    HOST, PORT = "localhost", 80
    try:
        server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
        print("works")
        server.serve_forever()
        serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversocket.bind((socket.gethostname(), 80))
        serversocket.listen(5)     
    except:
        print("nope")

        while True:
            (clientsocket, address) = serversocket.accept()
            ct = client_thread(clientsocket)
            ct.run()

Но когда я отправляючто-то на сервер я не получаю никакой информации.Как я могу изменить этот код, чтобы увидеть, отправляет ли кто-то какие-либо данные?


РЕДАКТИРОВАТЬ

Теперь я нашел этот код:

class mysocket:
    """demonstration class only
      - coded for clarity, not efficiency
    """

    def __init__(self, sock=None):
        if sock is None:
            self.sock = socket.socket(
                            socket.AF_INET, socket.SOCK_STREAM)
            else:
                self.sock = sock

    def connect(self, host, port):
        self.sock.connect((host, port))

    def mysend(self, msg):
        totalsent = 0
        while totalsent < MSGLEN:
            sent = self.sock.send(msg[totalsent:])
            if sent == 0:
                raise RuntimeError("socket connection broken")
            totalsent = totalsent + sent

    def myreceive(self):
        msg = ''
        while len(msg) < MSGLEN:
            chunk = self.sock.recv(MSGLEN-len(msg))
            if chunk == '':
                raise RuntimeError("socket connection broken")
            msg = msg + chunk
        return msg

но какиспользовать этот материал для прослушивания сокетов и получения отправленных данных?

1 Ответ

2 голосов
/ 10 ноября 2010

Самое простое решение - SocketServer , которое является частью стандартной библиотеки Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...