1

Ubuntu12.04ボックスにlinphoneをインストールしています。同僚は、UDPではなくSIPoverTCPを使用するWindowsSIP電話をテストしたいと考えています。

2つのスレッドを持つ20セントのC++プログラムを作成できると思います。1つはUDP側用、もう1つはTCP側用で、1つのプロトコルを受信して​​もう1つのプロトコルに送信するだけです。UDP部分はLinuxボックスにのみ存在するため、データグラムとストリームに問題があるとは思えません。SIPはとにかく特に「ストリーム」ではありません。

これは機能しますか、それとも私が気付いていない根本的なプロトコルの不快感がありますか?TCPを介して使用されるSIPは、通常UDPで移動するSIPと同じですか?これに対するよく知られたC++ソ​​リューションはありますか?

私は可能な解決策を探しましたが、socatは可能性がありますが、それはGPLであり、これは組み込みOCOプロジェクトを対象としています。

追加のアドバイスや提案は大歓迎です。

4

2 に答える 2

2

linphoneはSIPoverTCP(RFC 3261で義務付けられています)をサポートしているようです。

http://www.linphone.org/eng/features/

はい、それはネットワーク上の同じSIPメッセージです。

于 2012-09-04T12:49:00.803 に答える
2

元の質問に対する答えは、TCPSIPパケットをUDPソケットに単に「パイプ」することはできないということです。SIPには、応答を送信するネットワークパスを決定するために使用されるViaヘッダーにトランスポートのタイプが含まれています。対話内送信の場合に加えて、SIPサーバーはTCPクライアント宛ての新しいSIP要求を生成する必要があり、それらの要求を「パイプ」に送信するための設定またはメカニズムが必要になります。パイプは解析する必要があります。パケットを送信する必要がある場所を特定するためのSIP要求。

全体として、それはせいぜい非常に壊れやすい解決策であり、最悪の場合はかなり壊れた解決策になるでしょう。TCPをサポートするSIPサーバー/クライアントを見つけるのは、最近のほとんどの場合と同じように、はるかに迅速かつ簡単であり、実際、これまで行ってきたことのように見えます。

于 2012-09-04T22:27:20.380 に答える