2014-04-10 43 views
0

我正在開發ThreadedTCPServer以與駐留在同一臺機器上的PHP應用程序進行通信。這是假設接收來自這個PHP應用程序的請求,並使用ffmpeg在本地轉換一些視頻。Python ThreadedTCPServer:「名稱或服務未知」

下面的代碼:

# -*- coding: utf-8 -*- 
import os 
import socket 
import threading 
import logging.config 
import SocketServer, time 
from queuev2 import QueueServer 

logging.basicConfig(format='[%(asctime)s.%(msecs).03d] %(message)s', datefmt='%Y-%m-%d %H:%M:%S', filename=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'converter.log'), level=logging.INFO) 

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): 

    def handle(self): 
     data = self.request.recv(1024) 
     cur_thread = threading.current_thread() 
     response = "{}: {}".format(cur_thread.name, data) 
     videoPool.add(data) 
     print "Output! %s" % data 
     self.request.sendall(response) 

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): 
    pass 

if __name__ == "__main__": 

    logging.info("Initializing...") 
    videoPool = QueueServer() 
    HOST, PORT = "localhost", 6666 

    server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) 
    ip, port = server.server_address 

    # Start a thread with the server -- that thread will then start one 
    # more thread for each request 
    server_thread = threading.Thread(target=server.serve_forever) 

    # Exit the server thread when the main thread terminates 
    server_thread.daemon = True 
    server_thread.start() 

    print("Server loop running in thread: %s" % server_thread.name) 

    # "Groundhog day" time 
    while True: 
     time.sleep(999) 
     pass 

    #server.shutdown() 

這種運作良好,在我發展筆記本電腦,但在服務器上,我發現了以下錯誤:

Traceback (most recent call last): 
    File "server.py", line 31, in <module> 
    server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) 
    File "/usr/lib/python2.7/SocketServer.py", line 408, in __init__ 
    self.server_bind() 
    File "/usr/lib/python2.7/SocketServer.py", line 419, in server_bind 
    self.socket.bind(self.server_address) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.gaierror: [Errno -2] Name or service not known 

我猜它做與我正在使用的端口(6666),但我嘗試過其他人,它一直沒有工作。 Unix域套接字在這裏有用嗎?你可以給我一個例子嗎?

回答

0

這確實是一個端口問題。 Unix域套接字釘住它。

相關問題