私はUDPを介してビデオストリーミングのアプリケーションを持っており、それは完全に成功しています。ソケットをTCPに変更しました。少数のパケットが転送された後、RSTが送信され、動作を停止します。 (MTUが1400である一方で、大きな長のパケットも送信者から受信者へ転送された奇妙である - このパケットは何か?)私は受信機と送信者のログをチェックしRST TCPソケットを介したビデオストリーミングでは?
。受信者によって受信された最後のパケットには、大きくて奇妙なシーケンス番号(ダンプパケット)があります。エラーが発生してアプリケーションが停止します。送信者はそのようなパケットを送信していません。このパケットはどこから来たのですか?それはそれを作るトランスポート層ですか?私は、各パケットが送信後に送信者に睡眠時間(0.1秒)を加え
。このプログラムは、Wiresharkや奇妙なシーケンス番号で奇妙な長さのパケットがなくても動作しますが、これはビデオにとって妥当な解決策ではありません。 あなたの提案は何ですか?何が問題なの?どのようにこのネットワークを分析できますか?どうすればそれを解決できますか?
ソケットタイプをTCPからUDPに変更する根本的な理由は何ですか? UDPからTCPへの – szulak
私はその違いを研究し、その後私はTCPに基づいて新しいプロトコルを実装しようとしています。 –
通常、ループバックインターフェイス(アドレス127.0.0.1のもの)のMTUは、Linuxでは64Kです(MACでは16K - Windowsについてはわかりません)。アプリケーションのバッファサイズは、各TCPパケットで送信されるデータの量を直接決定するわけではありません。 OSは、(MTU、受信者のウインドウなどのように)送信を決定した時点で利用できるように、TCPペイロードに多くのデータを自由に置くことができます。 'TCP_NODELAY'オプション(' tcp(7) 'のmanページを見てください)を調べたいかもしれません。 –