2011-12-02 15 views
0

私はUDPを使用して、単純なデータ転送を実現しようとしています。チェックサムに問題があります。データが入っているパケットがある場合、どのようにチェックサムを実装する必要がありますか?また、どのようにタイムアウトを実装して再送信をトリガーするか考えていますか?信頼性の高いUDPを試していないのはなぜおかげUDP信頼性の高いデータサービス実装

+0

あなたはこれまでに何をしましたか?なぜこのコンテキストでUDP over TCPを選択したのですか? – nebula

答えて

0

は、それが標準を持っているhttp://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol

を参照してください。

+0

UDPデータ転送でパケットのチェックサムをチェックする必要があります。私はUDP環境で作業しています。これは、私のアプリケーションがより速く動作するからです。 – user1077036

+0

OK、R-UDPは実際の標準仕様ではありません。チェックサムを追加できます。受信パケットの確認、ウィンドウとフロー制御、失われたパケットの再送信、オーバーバッファリング? – Daniel

+0

はい私はそれらを気にしますが、私はすでにそれを扱うことができます。私は私のシステムに埋め込むことができるチェックサムアルゴリズムが必要です。 – user1077036

0
here's one approach for the internet checksum 

unsigned short checkSum() { 
    unsigned long sum = 0; 
    int i; 
    for(i=0; i < your packet length ; i++) { 
     sum += (your packet data[i] & 0xFFFF); 
    } 
    while (sum >> 16) { 
     sum = (sum & 0xFFFF) + (sum >> 16); 
    } 
    sum = ~sum;  
    return ((unsigned short) sum); 
} 

for the retransmission, you can set alarm to trigger timeout 
when packet is loss. you can do something using 
signal (SIGALRM, timeout function); 

Hope it helps! 
関連する問題