2012-12-17 5 views
1

지정한 포트에서 클라이언트를 받아 들여야하는 서버를 작성해야합니다.
예 : A 포트 1337에 연결하고자하는, 그래서 서버는 내가이 문제를 처리하는 방법을 모르는다중 포트 서버 처리

... 1992 포트 1337 B 때문에 서버 1992에서 수신 등을들을 수 있습니다. 다음과 같은 시스템을 만들어야합니까?
- 모든 클라이언트가 동일한 포트 (예 : XXXX)에 연결됩니다.
- 클라이언트의 첫 번째 패킷은 원하는 포트를 지정합니다.
- 서버가 새 포트에서 바인딩/수신/허용합니다.
- 서버가 클라이언트에 응답한다고 응답합니다.
- 클라이언트가 포트 XXXX에서 연결을 중지하고 새 포트에서 연결을 시작합니다.
이런 종류의 시스템이 좋은지는 잘 모르겠지만 어떻게해야하는지 알 수 없습니다.
Florian

+1

귀하의 솔루션이 효과가 있다고 생각합니다. – kol

+1

그건 절대 의미가 없습니다. 왜 다른 연결을 만들기 위해서 연결을 만드나요? 왜 모든 클라이언트가 같은 포트에 연결해야합니까? (그리고 클라이언트가 전혀 듣지 않는 이유는 무엇입니까? UDP를 사용하고 있습니까?) –

+0

@DavidSchwartz 질문이 숙제라고 들립니다. – kol

답변

1

공간을 포트 매핑으로 유지하는 일종의 마스터 프로세스 또는 중앙 테이블이 필요합니다. 클라이언트가 먼저 마스터 프로세스에 연결하거나 어떤 종류의 "진입실"에 연결해야 연결이됩니다. 그런 다음 방에서 방으로 이동할 때 연결해야하는 포트를 찾고 다음 포트로 연결하십시오. 원하는 경우 모든 중앙 정보를 데이터베이스에 보관할 수 있습니다.

0

다른 포트에 대한 요청을 통신하려면 클라이언트가 연결할 표준 포트가 하나 이상 있어야합니다. 그것은 분명히 열려야 할 필요는 없습니다. 예를 들어 UDP 패킷을 조용히 수락 할 수 있습니다. 일부 시스템은 시스템을 감추고 있습니다. 또한 새로운 포트가 바인딩되고 준비되었음을 나타내는 응답을 생성하려는 경우 TCP로 작동 할 수도 있습니다.

올바른 프레임 워크가있는 경우 여러 포트에서 수신 대기하는 것이 특히 까다로운 것은 아닙니다. libevent은 시작하는 방법의 예입니다.

표준 포트가 열려 있고 알 수없는 수의 동적 포트가있는 것은 이상한 것처럼 보입니다. 언제 이것들을 닫습니까? 그들은 결국 시간 초과됩니까? 본인의 청취 전화는 단기간인가요?

+0

"분명히 열릴 필요는 없습니다"는 무엇을 의미합니까? – Florian

+0

마찬가지로 패킷으로 응답 할 필요가 없거나 포트 스캐닝 관점에서 열려있는 것처럼 보입니다. 패킷을 수신 할 수 있어야합니다. – tadman

+0

오, 알았어, 고마워. – Florian