2016-04-04 27 views
0

私のプロジェクトはWebSocketプロトコルを使用して通信します。サーバー側はCに実装されており、クライアント側ではQt 4.8.1を使用してHTMLとJavaScriptコードを実行する簡単なブラウザを構築しています。Websocketクライアントがハンドシェークの直後に[FIN、ACK]を送信します

私はQtフレームワークに1つの問題があります。ハンドシェイク後、クライアントのサイズは[FIN、ACK]をサーバーに直ちに送信し、クローズセッションにin this pictureと通知します。

この問題の原因はわかりません。私はこれがQtフレームワークのバグだと思います。なぜなら、Firefoxブラウザでクライアントを実行すると、それは起こらないからです。 これはなぜ起こっているのでしょうか?

+0

最小テストケースを追加するまで、あなたの質問は話題にはなりません。また、サーバー側が微妙に壊れていて、実際にwebsocket仕様を完全に実装していない可能性もあります。 'QWebSocket'はプロトコル13のみをサポートすることに注意してください。サーバーが接続していない場合は、表示されているように接続が切断されます。 –

答えて

0

Firefoxバージョンはたぶんあなたのサーバーが正しくRFC6455プロトコル標準を実装し https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00

(プロトコルバージョン13)が、QT 4.8.1でのWebSocket hybi-00プロトコル規格を使用するのWebSocket RFC6455プロトコル標準(無プロトコルバージョン)を使用していますhybi-00プロトコル標準では間違っています。リクエストとレスポンスの内容(/ key3 /とチャレンジデータ)を記録してデバッグしてください。サーバーによって生成されたチャレンジデータがクライアント(QT)のチャレンジデータと一致しない場合、クライアントはすぐに[FIN、ACK]を送信してソケットを閉じます。

+0

ありがとう!今はうまくいっています! –

関連する問題