저는 C 언어와 리눅스 플랫폼을 사용하여 소켓 프로그래밍을하고 있습니다. 제 요구 사항은 서버가 2 ~ 3 개의 클라이언트만을 수신하도록 만드는 것입니다. 그게 어떻게 가능해 ?소켓 프로그래밍에서 서버가 클라이언트의 제한된 수만큼 수신 대기하도록 만드는 방법은 무엇입니까?
답변
당신은 listen() 호출에서 두 번째 인수를 지정하여이를 만듭니다.
나는 당신이 TCP 프로토콜을 사용하고 있다고 가정한다. 사람 페이지에서
:
int listen(int sockfd, int backlog);
백 로그 인수는 큐 증가 할 수 sockfd와 대한 연결을 보류 에 최대 길이를 정의합니다. 대기열 이 가득 찼을 때 연결 요청이 도착하면 클라이언트는 ECONNREFUSED 또는 의 오류를 수신 할 수 있습니다. 기본 프로토콜이 재전송을 지원하면 이 무시되어 나중에 연결을 다시 시도 할 수 있습니다. 읽기 제안
listen(fd, 2);
: -
그래서 두 클라이언트에 대한 당신처럼 듣고 전화를 당신이 한계에 도달 할 때 http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#listen
번호 백 로그 인수는 수락되기 전에 존재할 수있는 연결 수를 제어하며 플랫폼은 실제 번호를 감지 할 수 없게 변경할 수 있습니다. – EJP
가 수신 대기 소켓을 닫고 다시 고객의 경우 하나를 엽니 다 연결을 끊습니다. 당신이 한계에있는 동안
또는
휴가는 열려 있지만 연결을 받아들이지 중지합니다.
listen()
에 대한 백 로그 매개 변수는 여기에 대한 다른 대답 및 의견과는 달리이 매개 변수와 아무 관련이 없습니다.
- 1. 소켓 프로그래밍에서 수신 된 문자 수를 계산하십시오.
- 2. 소켓 프로그래밍에서 텔넷 클라이언트의 서버에서 인수를 읽는 방법 c
- 3. 두 개의 UDP 서버가 같은 포트에서 수신 대기하도록 하시겠습니까?
- 4. 소켓 프로그래밍에서 select() 함수를 사용하는 방법은 무엇입니까?
- 5. 소켓 서버가 수신 한 데이터를 페이지에 표시합니다.
- 6. 제한된 지시문을 만드는 방법은 무엇입니까?
- 7. libvlc를 사용하여 C++에서 수신 대기하도록 포트를 설정하는 방법은 무엇입니까?
- 8. 다른 포트를 수신 대기하도록 Apache를 구성하는 방법은 무엇입니까?
- 9. 소켓 프로그래밍에서 자바
- 10. 소켓 프로그래밍에서 클라이언트가 주소에 바인딩되지 않는 이유는 무엇입니까?
- 11. 파이썬 소켓 서버 : 나는이 포트에서 수신 파이썬 소켓 서버가 주소
- 12. 네트워크 프로그래밍에서 싱글 대 듀얼 소켓
- 13. 서버 측 포트의 클라이언트 요청을 수신 대기하도록 정책을 다시 작성하는 방법은 무엇입니까?
- 14. 이 코드를 UDP 포트에서 수신 대기하도록 변경해야하는 사항은 무엇입니까?
- 15. 소켓 수신 중지 수신 허용
- 16. TemporaryQueue를 사용하여 소비자로부터 응답을 수신 대기하도록 JMS Producer를 만드는 방법은 무엇입니까?
- 17. Go 프로그래밍에서 양식 템플릿을 만드는 방법은 무엇입니까?
- 18. 소켓 프로그래밍에서 PHP
- 19. 소켓 프로그래밍에서 선택
- 20. 소켓 프로그래밍에서 select() 이해
- 21. 웹 서버가 제한된 소켓 포트 번호를 극복하는 방법
- 22. GridView의 열 수만큼 HTML div 태그를 만드는 방법은 무엇입니까?
- 23. 서버가 클라이언트의 메시지를받지 못합니다.
- 24. VIP에서 수신 대기하도록 포스트그레스를 설정할 수 있습니까?
- 25. 루프백 인터페이스에서만 수신 대기하도록 서버 수정
- 26. 소켓 프로그래밍에서 수신 된 패킷의 tcp 헤더를 가져 오는 방법은 무엇입니까?
- 27. 시간 제한된 해시/키를 만드는 방법은 무엇입니까?
- 28. Grails에서 제한된 영역을 만드는 방법은 무엇입니까?
- 29. 제한된 권한으로 MySQL 사용자를 만드는 방법은 무엇입니까?
- 30. Jersey 클라이언트의 CLOSE_WAIT 소켓
여기에서 http://man7.org/linux/man-pages/man2/listen.2.html :'int listen (int sockfd, int backlog) ;. 백 로그 인수는 sockfd에 대한 대기 연결의 대기열이 증가 할 수있는 최대 길이를 정의합니다.'백 로그 '가 찾고있는 것이 있습니까? –
서버가 "* 2 또는 3 개의 클라이언트 * 만"수신하는 경우에도 서버 리소스가 무제한 (시스템 리소스에 의해서만 제한됨)의 클라이언트에 병렬로 연속적으로 연결할 수 있다는 것을 알고 있습니다. 더 많은 요구 사항을 지정하고자 할 수 있습니다. – alk