2014-05-30 2 views
0

내 멀티 스레드 응용 프로그램에는 다른 소켓을 사용하여 동일한 포트에 응용 프로그램에 액세스하는 스레드가 둘 이상있을 수 있습니다. 이것은 프로그래밍 적으로 제 경우처럼 두 번째 스레드가 동일한 포트에 대한 소켓 연결을 생성하고 첫 번째 스레드 상태가 실행 중임을 보여줄 때처럼 보이지만 아무것도하지 않습니다. 예를 들면.
2 개의 스레드와 동일한 포트에 2 개의 소켓 연결을 만드는 것이 맞습니다.

하나의 스레드 t1이 있다고합시다. 포트 2106에서 소켓 연결을 만들고 데이터를 가져 오기 시작합니다. 이제는 데이터를 가져 와서 파일 시스템에 쓰는 중입니다. 그러는 동안 또 다른 스레드 t2가 시작됩니다. 이 t2 스레드는 동일한 포트 2106에서 동일한 IP에 소켓 연결을 만들고 데이터를 가져옵니다. 이제는 제 경우 스레드 t2는 데이터를 가져 오지만 스레드 t1은 아무 것도하지 않습니다.

신체가이 이유를 말할 수 있습니까?

+2

* 제목 *에있는 질문에 대한 답변은 "예"입니다. 그것은 당신이 실제로 당신의 텍스트에서 묻고있는 질문인지 여부는 불분명합니다. –

+0

서버 소켓이 한 번에 둘 이상의 열린 연결을 지원할 수 있다면 서버가 다중 연결을 허용하면 이러한 제한이 없습니다. – harshal

답변

2

텍스트에 따르면 2 스레드가 포트에서 수신 대기중인 서버 소켓에 대한 연결 소켓을 만들고 유지 관리하는 것은 불법이 아닙니다.

두 개의 다른 탭에서 예를 들어 facebook.com을 열면 탭이있는 브라우저가 수행하는 작업입니다.

그러나 서버가 반복 연결 서버처럼 보이므로 각 연결을 처리하기 위해 별도의 스레드 또는 프로세스를 만들지 않아야합니다. 그러나 모든 최신 웹 서버는 동시 연결 서버이므로 2 개의 다른 스레드에서 2 개의 다른 연결을 작성하면 서버 측의 두 개의 서로 다른 스레드가 차례로 처리합니다.

+1

. 서버가 여러 연결을 처리 할 수 ​​있는지 확인해야합니다. –

관련 문제