2012-03-30 5 views
1

클라이언트 응용 프로그램이 로그인 할 때 서버로 인증해야하는 응용 프로그램을 코딩하고 있으며 30 분마다 패킷을 보내고 몇 가지 정보를받은 다음 30 분 더 잠을 자고 있습니다.소켓이 항상 열려 있거나 필요할 때 소켓이 열려 있습니까?

언제든지 소켓을 시작하고 패킷을 보내고받은 후에 닫는 것이 적절한 방법일까요? 아니면 항상 열어두고 연결시켜야합니까?

서버에 연결하여 100 명이 넘는 클라이언트가 동시에 실행됩니다.

는 Btw는 전송되는 데이터는 5~10초

을 보내 MAX에서 검색되는 것이 매우 중요합니다

답변

2

확실히 새로운 연결을 매번 열어 즉시 닫는 것이 좋습니다. 새로운 연결을 여는 데 오랜 시간이 걸리지 않으며 5-10 초의 요구 사항이이 접근법을 통해 쉽게 충족 될 수 있습니다.

2

유휴 연결을 30 분 동안 지속하는 일부 라우터/방화벽에 의해 살해 될 가능성이 높다. TCP/IP 연결을 설정하면 비용이 발생하지만 30 분마다 5-10 초에 비하면 무시할 수 있습니다.

0

일반적으로 TCP 소켓을 열어 두지 만, 서버가 이러한 연결을 사용하여 수행해야하는 작업에 따라 다릅니다. 이 경우에는 아마 그들을 닫을 것입니다. 다음은 대개의 규칙입니다.

클라이언트가 서버에 데이터를 보낼 때마다 인증하는 경우 서버에서 "누가 누군지"를 말하면 쉽게 닫을 수 있습니다. 때마다.

클라이언트가 처음으로 서버에 데이터를 보내고 서버가 클라이언트 연결에 대한 키 매핑을 유지해야하는 경우에만 연결을 열어 두는 것이 좋습니다.

관련 문제