UDP 소켓을 사용하고 있습니다. 서버 응용 프로그램은 클라이언트가 서버에 데이터를 전송해야하는 시간에 대한 정보를 클라이언트에 보냅니다. 그런 다음 클라이언트는 특정 패킷을 보내이 시간 동안 전송을 시작합니다.UDP 소켓. 데이터가 유선으로 전송되는지 확인하는 방법은 무엇입니까?
Sendto() 이후에 데이터가 전송되었는지 확인하여 클라이언트가 실제 시간을 보내고 있는지 확인해야합니다. 그것이 존재합니까?
OS : 윈도우 7
나는 perfomance 카운터 ( 네트워크 인터페이스 \ 출력 큐 길이)를 사용하려고 노력하지만, 항상 0입니다;
내가 아는 또 다른 방법은 보낼 패킷 크기에 SO_SNDBUF ( setsockopt())를 설정하는 것입니다. 따라서 sendto()은 송신 소켓 버퍼가 가득 찰 때까지 차단됩니다 (이전 패킷은 네트워크 인터페이스 버퍼로 보내지지 않습니다). 하지만 그것은 네트워크 인터페이스 버퍼가 아닌 소켓 버퍼에서만 작동하기 때문에 작동하지 않는 것으로 보입니다.
저는 Linux 용 솔루션에도 관심이 있습니다.
UDP는 신뢰할 수 없습니다 (의도적으로). 정확히 무엇을 하려는지 확실하지 않지만, 해결할 수없는 문제입니다. 무언가가 메시지를 받았는지 알아야 할 경우 TCP 또는 신뢰할 수있는 다른 프로토콜을 사용하십시오. – Mat
의견을 주셔서 감사합니다. 나는 무언가가 메시지를 받았는지 알 필요가 없다. 문제는 뭔가 보낼 때입니다. 나는 소켓 버퍼 또는 네트워크 인터페이스 버퍼를 넣지 않고 유선으로 보내는 것을 의미한다. 클라이언트가 데이터를 보내는 데 걸리는 시간을 알고 싶습니다. – Dmitry
그 정보는 거의 전달되지 않을 것이라는 보장조차 없기 때문에 가치가 거의 없으며, 그렇다고하더라도 패킷을받을 것이라는 보장은 전혀 없습니다. – Mat