2014-04-15 1 views
0

서버에서 클라이언트로 TCP 서버로 통신하고 싶습니다. 이 질문에 관한 내 질문은 다른 스레드에서 클라이언트로 바이트를 보내는 일반적인 방법이 될 것입니다. 누군가가 웹에서 파이썬 스크립트를 호출 할 때. 이것을 달성 할 방법이 있습니까?파이썬 실행 중 명령으로 보내기

+0

귀하의 필요 사항에 대해 구체적으로 말씀해 주시겠습니까? 클라이언트가 브라우저를 사용하여 서버에 연결하는 경우 [Tornado] (http://www.tornadoweb.org/en/stable/)를 사용할 수 있습니다. 이미 쓰레드를 사용하여 코드를 개발했다면 도움이 될만한 샘플을 제공하십시오. –

+0

어떻게 구체적으로 설명 할 수 있을지 모르겠다. 나는 파이썬으로 TCP 서버를 개발하고 싶다. (꽤 쉽다). 이 서버는 실행되는 스레드에 다른 프로세스에 대한 정보가 있어야합니다. 누군가 http를 사용하여 서버에서 다른 스크립트를 호출합니다. – user1710004

답변

1

클라이언트가 연결될 때 생성되는 스레드에 대한 멤버 변수를 정의 할 수 있습니다. 그런 다음이 변수에 쓰기 위해 잠금을 사용하십시오. 이 변수는 모든 스레드에 의해 공유됩니다 :

import threading 

class ConnectedClients(threading.Thread): 

    used_ressources = list() 
    used_ressources_lock = threading.Lock() 

    def run(self, ressource_to_get): 
     if ressource_to_get in used_ressources: 
      raise Exception('Already used ressource:' + repr(ressource_to_get)) 
     else: 
      can_access = self.used_ressources_lock.acquire(blocking=True, timeout=5) 
      if can_access: 
       self.used_ressources.append(ressource_to_get) 
       self.used_ressources_lock.release() 
       # Do something... 
       # You will have to acquire lock and remove ressource from 
       # the list when you're done with it. 
      else: 
       raise Exception("Cannot acquire lock") 

이와 비슷한 것들을 찾으세요?

+0

예, 정확하게 고마워요! 어쨌든 이제는 Objective-C를 서버에 사용합니다. 더 안정적이고 제어하기 쉽기 때문에 더 많은 라이브러리, 서버 및 클라이언트가 같은 언어로 제공됩니다. – user1710004

관련 문제