(.NET 비동기) TCP 서버에 많은 양의 메시지를 보내는 .NET TCP 클라이언트가 있습니다.대용량 TCP 클라이언트 설계
TIME_WAIT (으)로 인해 서버에 메시지를 계속 보내야하지만 클라이언트의 포트가 부족합니다.
사용 가능한 모든 포트를 사용하지 않고도 프로그램이 메시지를 지속적으로 안정적으로 보낼 수있는 방법은 무엇입니까?
동일한 소켓을 계속 재사용 할 수있는 방법이 있습니까? Disconnect()와 REUSEADDRESS 소켓 플래그를 살펴 보았지만 좋은 사용 예제는 찾을 수 없습니다. 실제로 대부분의 소식통은 낮은 수준의 사용 (즉, 소켓 핸들 만 재활용)과 같이 Disconnect를 사용하지 말라고 말합니다.
나는 UDP로 전환해야한다고 생각하거나 아마도 C++과 IOCP를 사용하는 방법이 있을까요?
이 척도가 너무 심각하지 않습니까? 1000 개의 연결이 있다고 가정합니다. 1000 개의 스레드가 있어야한다고 제안합니까? – Arafangion
@Arafangion : 많은 동시 연결이 예상된다면 스레드 풀링을 사용할 수 있습니다. 이는 응용 프로그램에 대해 언제든지 활성화 될 스레드 수에 대한 상한을 설정하고 사용을 관리하는 데 도움이됩니다. –
select() 또는 다른 폴링에 비해 불필요한 오버 헤드가 여전히 높습니다. – Arafangion