서버에 40 개의 클라이언트로부터 지속적으로 데이터를 수신하는 소켓이 하나있는 udp 서버/클라이언트 응용 프로그램을 개발했습니다. 이제 40 명의 클라이언트 모두가 한 번에 데이터를 보내면 어떻게되는지 알고 싶습니다. 내 이해에 따르면, 데이터를 수신 버퍼에 대기열에 넣어야하고 다음에 recvfrom()을 호출하면 버퍼에 대기중인 데이터가 수신됩니다. 즉, recvfrom()을 호출하여 40 개의 모든 클라이언트 데이터를 수신해야합니다. 모든 클라이언트가 동시에 데이터를 보낸 경우 또한 40 클라이언트의 모든 데이터가 수신 버퍼에 대기하거나 일부 데이터가 삭제된다는 것을 알고 싶습니다. 또한 데이터가 수신 버퍼에 대기 할 수있는 최대 버퍼 크기는 얼마이며 데이터를 삭제할 수있는 최대 한도는 얼마입니까?udp 소켓의 수신 버퍼/큐의 최대 크기
0
A
답변
2
모든 클라이언트가 동시에 데이터를 보냈지 만 recvfrom()을 호출하여 40 개의 모든 클라이언트의 데이터를 수신해야합니다.
즉, 네트워크 스택에서 별도의 UDP 데이터 그램을 결합 할 수 있는지 여부를 묻습니다. 대답은 : 아니오, 별도의 데이터 그램으로 도착하여 recvfrom()
을 별도로 호출해야합니다.
또한 40 클라이언트의 모든 데이터가 수신 버퍼에 대기하거나 일부 데이터가 삭제된다는 것을 알고 싶습니다.
UDP는 배달을 보장하지 않습니다. 패킷은 경로를 따라 어디에서나 전송 호스트, 경로상의 모든 장치 및 수신 호스트에 의해 삭제 될 수 있습니다.
또한 수신 버퍼에 데이터를 대기시킬 수있는 최대 버퍼 크기는 얼마이며 데이터를 삭제할 수있는 최대 한도는 얼마입니까?
이것은 일반적으로 구성 할 수 있습니다. 수신 호스트에 도달하기 전에 패킷이 삭제 될 수 있음을 명심하십시오.
2
실제로 OS 소켓 버퍼의 크기에 따라 다릅니다. 리눅스에서는 상당히 쉽게 구성 할 수 있으므로, 여러분의 Windows 시스템을 위해 그것을 변경하는 방법을 구글에 할 필요가있을 것입니다.
관련 문제
- 1. Linux UDP 수신 버퍼의 최대 크기
- 2. udp 소켓 수신 버퍼 크기
- 3. UDP 소켓의 보안 관리
- 4. UDP 소켓의 소스 IP 설정
- 5. 자바에서 UDP 소켓의 번호를 전송하십시오.
- 6. UDP sendto() 및 recvfrom() 최대 버퍼 크기
- 7. 안드로이드 UDP 수신/수신 대기
- 8. 허용되는 소켓의 버퍼 크기 설정
- 9. UDP 멀티 캐스트 수신 실패 수신 수신
- 10. 오류 : 수신 메시지의 최대 메시지 크기 할당량
- 11. C++ 소켓 프로그래밍 TCP/IP 소켓의 최대 크기 버퍼?
- 12. Epoll은 이벤트 수신 UDP 서버가있는 UDP 수신 소켓과 함께 작동합니다.
- 13. UDP 메시지 수신
- 14. 전체 UDP 패킷 수신
- 15. iPhone에서 UDP 패킷 수신
- 16. .NET UDP 데이터 수신
- 17. 스위프트 : GCDAsyncUdpSocket으로 UDP 수신
- 18. C에서 UDP 패킷 수신
- 19. ENOTFOUND node.js가있는 UDP 소켓의 오류 0.10
- 20. 내 UDP 소켓의 "실제"포트를 찾는 방법?
- 21. UDP 소켓의 처리량을 제어하는 방법은 무엇입니까?
- 22. Qt udp 소켓, 소켓의 readyRead 신호는 무엇입니까?
- 23. 소켓 수신 버퍼 크기
- 24. UDP 수신 코드가 하나의 패킷 만 수신
- 25. boost.asio 소켓의 수신/전송 기능이 좋지 않습니까?
- 26. 안드로이드 DatagramSocket 수신 버퍼 크기
- 27. udp 수신 지연의 원인은 무엇입니까?
- 28. udp 브로드 캐스트 패킷 수신
- 29. .NET UDP 멀티 캐스트 수신
- 30. UDP 브로드 캐스트 데이터 수신
그래서 소켓에서 40 개의 클라이언트로부터 데이터가 도착하면 소켓 버퍼에 바로 버퍼링됩니까? recvfrom()에 대한 각 호출은 소켓 버퍼에서 데이터를 읽습니까? – Ayse
적합하지 않으면 버려집니다. – EJP