2015-09-20 1 views
0

Мой скрипт очень прост.Python socket: дескриптор Bad File для простого сценария подключения клиента

1.) Сервер прослушивает соединение HTTP

2.) Клиент устанавливает соединение

3.) сервер печатает наш запрос HTTP данные клиента

Когда клиент подключается к серверу и делает запрос браузера, он вызывает ошибку Socket «Bad File Descriptor».

Я не уверен, почему он это делает. Может кто-нибудь мне помочь?

import socket 

host = '' 
port = 1000 


def proxy(connection,client): 
    request = connection.recv(MAX_DATA_RECV) 
    print request 
    connection.close() 

def main(): 
    try: 
      # create a socket 
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
      s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
      # associate the socket to host and port 
      s.bind((host, port)) 
      # listenning 
      s.listen(BACKLOG) 
      print("Listening for connections") 

    except socket.error, (value, message): 
      if s: 
        s.close() 
        print "Could not open socket:", message 
        # get the connection from client 
    while 1: 
      try: 
        conn, client_addr = s.accept() 
        print("Received connection from " + str(client_addr)) 
        proxy(conn,client_addr) 
        #thread.start_new_thread(proxy, (conn,client_addr)) 
        if s: 
          s.close() 
      except socket.error, (value,message): 
        print value 
        print message 
        sys.exit(1) 


main() 

ответ

1

Закрытие сокета сервера после первого клиента. Не делай этого.

while True: 
    try: 
     conn, client_addr = s.accept() 
     print("Received connection from " + str(client_addr)) 
     proxy(conn,client_addr) 
    except socket.error, (value,message): 
     print value 
     print message 
Смежные вопросы