2011-02-04 9 views
1

私はネットワークの信頼性のシミュレーションに取り組んでいます。サービスの品質のパーセンテージに基づいてパケットをシミュレートする必要があります。現在、私はsendsendtorecvおよびrecvfromにフックするDLLを持っています。私のフックは、サービス品質に基づいてパケットをドロップします。winsockのソケットのプロトコルを取得する

UDPパケットにフックを適用するだけで、TCPを妨害する必要はありません(TCPはリモートデバッグに使用されます)。

ソケットがバインドされているプロトコルに対してWinSockを照会する方法はありますか?

int WSAAPI HookedSend(SOCKET s, const char FAR * buf, int len, int flags) 
{ 
    //if(s is UDP) 
    //Drop according to QOS 

    else 
    //Send TCP packets undisturbed 
    return send(s, buf, len, flags); 
} 

答えて

1

私はあなたがgetsockoptを使用してソケットタイプを得ることができると思う:オプションSO_BSP_STATEはADDRES、ポート、およびプロトコルを返すことはgetsockoptマニュアルに記載されてい

int optVal; 
int optLen = sizeof(int); 

getsockopt(socket, 
      SOL_SOCKET, 
      SO_TYPE, 
      (char*)&optVal, 
      &optLen); 

if(optVal = SOCK_STREAM) 
    printf("This is a TCP socket.\n"); 
else if(optVal = SOCK_DGRAM) 
    printf("This is a UTP socket.\n"); 
else 
    printf("Error"); 
+0

。ありがとうございました –

関連する問題