2012-05-18 3 views
0

UDP 소켓을 사용하고 있습니다. 서버 응용 프로그램은 클라이언트가 서버에 데이터를 전송해야하는 시간에 대한 정보를 클라이언트에 보냅니다. 그런 다음 클라이언트는 특정 패킷을 보내이 시간 동안 전송을 시작합니다.UDP 소켓. 데이터가 유선으로 전송되는지 확인하는 방법은 무엇입니까?

Sendto() 이후에 데이터가 전송되었는지 확인하여 클라이언트가 실제 시간을 보내고 있는지 확인해야합니다. 그것이 존재합니까?

OS : 윈도우 7

나는 perfomance 카운터 ( 네트워크 인터페이스 \ 출력 큐 길이)를 사용하려고 노력하지만, 항상 0입니다;

내가 아는 또 다른 방법은 보낼 패킷 크기에 SO_SNDBUF ( setsockopt())를 설정하는 것입니다. 따라서 sendto()은 송신 소켓 버퍼가 가득 찰 때까지 차단됩니다 (이전 패킷은 네트워크 인터페이스 버퍼로 보내지지 않습니다). 하지만 그것은 네트워크 인터페이스 버퍼가 아닌 소켓 버퍼에서만 작동하기 때문에 작동하지 않는 것으로 보입니다.

저는 Linux 용 솔루션에도 관심이 있습니다.

+0

UDP는 신뢰할 수 없습니다 (의도적으로). 정확히 무엇을 하려는지 확실하지 않지만, 해결할 수없는 문제입니다. 무언가가 메시지를 받았는지 알아야 할 경우 TCP 또는 신뢰할 수있는 다른 프로토콜을 사용하십시오. – Mat

+0

의견을 주셔서 감사합니다. 나는 무언가가 메시지를 받았는지 알 필요가 없다. 문제는 뭔가 보낼 때입니다. 나는 소켓 버퍼 또는 네트워크 인터페이스 버퍼를 넣지 않고 유선으로 보내는 것을 의미한다. 클라이언트가 데이터를 보내는 데 걸리는 시간을 알고 싶습니다. – Dmitry

+0

그 정보는 거의 전달되지 않을 것이라는 보장조차 없기 때문에 가치가 거의 없으며, 그렇다고하더라도 패킷을받을 것이라는 보장은 전혀 없습니다. – Mat

답변

0

위의 Mat의 의견을 읽으십시오. 일반적으로 UDP의 경우 send() 메소드를 호출하자마자 데이터가 전송된다고 가정해야합니다. 데이터가 실제로 전송 및/또는 수신되었음을 확인하는 방법은 없습니다.

편집 : 데이터가 의도 한 목적지에 도달했는지 확인할 방법이 없다는 것을 의미했습니다. 데이터가 전송되고 있는지 확인할 수 있습니다. 어느 정도 경로를 따라 추적 할 수도 있습니다. 그러나 의도 한 수신자가 도달 할 수 있다고해도 수신 한 데이터를 수신 할 수있는 방법은 없습니다. 수신자가 수신 중이라는 것을 의미하지는 않습니다 ...

+0

실제로 MAC에 RGMII/XGMII 루프백을 설정하고 패킷을 일치시킬 수 있습니다. 또는 나가는 포트를 미러링하고 루프백을 설정하면 조금 더 비싸지 만 확실히 말할 것입니다 :)이 솔루션의 실용성에 관해서는별로 의미가 없습니다. –

0

데이터가 유선으로 전송되었는지 확인하는 방법이 필요합니다. Sendto() 다음에 클라이언트가 실제로 보내는 시간을 확인합니다. 그것이 존재합니까? sendto() 성공적으로 클라이언트로 전송 된 패킷을 전송하는지 여부에 관해서는

, 그건 당신이해야 할보다 아마도 더 많은 작업입니다.

클라이언트가 특정 시간대 만 보내려면 서버의 패킷에 전송할 시간을 포함시켜야합니다. 또한 클라이언트는 네트워크를 통해 서버에 도달하는 데 걸리는 시간을 추정해야합니다. 이 두 숫자를 사용하여 클라이언트가 전송할 시간을 예측하십시오.

+0

클라이언트가 보낼 수있는 시간을 알아야하기 때문에 도움이되지 않습니다. 예를 들어, (특정 형식의) 두 개의 패킷을 보냈는데 더 많이 보내거나 보낼 수 있는지 알아야합니까? (timeslot (전송할 시간) elaspsed 여부) – Dmitry

+0

귀하의 질문에 timeslot에 대해 아무것도 말하지 않았습니다. 프로토콜이 서버 및 클라이언트 측에서 수행하는 작업에 대한 전체 설명으로 질문을 수정하십시오. –

+1

죄송합니다. "서버 응용 프로그램은 클라이언트가 서버에 데이터를 전송해야하는 시간에 대한 정보를 클라이언트에 보냅니다." 나는이 시간을 "타임 슬롯"으로 의미합니다. 어쩌면 나는 잘못된 말을 사용한다. – Dmitry

관련 문제