2010-11-09 1 views
0

Как я могу запустить простой сервер python, который позволит мне подключиться к сокетам из какого-то внешнего источника?Простой сервер 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() 

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


EDIT

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

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 

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

+2

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

+0

Я хочу использовать разъемы для дальнейшего использования. Просто прочитав документы, я уже ничего не пробовал. – decarbo

ответ

2

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

Смежные вопросы