2014-03-05 8 views
2

"이 모듈은 비동기 소켓 서비스 클라이언트 및 서버 작성을위한 기본 인프라를 제공합니다." 나는 그런 피어 투 피어 같은 비 클라이언트 - 서버 아키텍처를 원하는 경우 http://docs.python.org/2/library/asyncore.html#module-asyncore파이썬의 asyncore에서 피어 투 피어 (peer to peer)가 가능합니까?

, 여전히 일을/asyncore을 asynchat 수 있습니다, 또는 클라이언트 - 서버 패러다임을 강요 하는가?

+3

'클라이언트'와 '서버'를 구별하는 유일한 이유는 들어오는 연결을 수락하는지 여부입니다. –

+0

@JarrodRoberson 그리고 그 서버는 클라이언트와의 연결을 시작하지 않습니다. 네트워크에 5 명의 피어가 있다고 가정 해 봅시다. 세 번째로 참여한 피어는 두 개의 클라이언트 연결을 시작하고 두 개의 클라이언트 연결을 수신 한 서버/수신기를 시작했습니다. asyncore를 사용하여 브로드 캐스트하려면 피어 # 3이 서버 **를 피어 2 명에게, 클라이언트 **로 메시지 **를 다른 두 명에게 브로드 캐스팅해야합니다. "진정한"P2P에서는 모든 소켓을 불명확하게 방송합니다. 또는 나는 무엇인가 놓치고 있냐? – gentimouton

답변

1

피어 투 피어라는 매우 정의는 중앙 서버의 아이디어를 무시한 직접 연결성을 의미합니다 (최소한 데이터 전송을 위해, 예를 들어 사용자를 함께 설정하는 데 여전히 사용될 수 있습니다). 그리고 피어 투 피어는 피어 - 서버 통신과 크게 다르지 않습니다. A와 B 사이에서 통신하는 소켓입니다. 물론 서버를 통해 피어 투 피어를 실행하는 데는 특정 단점이 있습니다. 예를 들어 협상해야합니다 어느 것이 호스트가 될 것인지 그리고 어느 것이 호스트에 연결될 것인지 파악하기 위해 피어 간의 NAT. 또한 두 사용자가 모두 NAT를 사용하는 경우에 대비하여 무언가가 필요합니다.