タグ付けされた質問 「network-programming」

ネットワークの作成と管理、およびプログラム(のセット)へのネットワーク接続の追加に関連するプログラミング。

21
接続タイムアウトエラーを人工的に作成する
接続タイムアウトを受信したときに発生するソフトウェアのバグがありました。これらのエラーは非常にまれです(通常、内部ネットワークによって接続が切断された場合)。この種の効果を人工的に生成してソフトウェアをテストするにはどうすればよいですか? それが重要な場合、アプリはCAsyncSocketクラスを使用してC ++ / MFCで記述されます。 編集: 存在しないホストを使用しようとすると、ソケットエラーが発生します。 WSAEINVAL(10022)無効な引数 私の次の試みは、別のポート、たとえば81(自分のサーバーでも)に接続するというアレクサンダーの提案を使用することでした。それはうまくいきました。ドロップされた接続とまったく同じです(60秒待ってからエラー)。ありがとうございました!

1
HTML5 WebSocket APIをサポートしているブラウザーは何ですか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 ブラウザで実行するインスタントメッセージングアプリケーションを開発します。 どのブラウザがWebSocket APIをサポートしていますか?




6
TeamViewerはどのように高速ですか?
長さについて申し訳ありません、それはちょっと必要です。 前書き 私は、Windows Vista / 7用のC#4.0でリモートデスクトップソフトウェア(楽しみのために)を開発しています。基本的な障害を乗り越えました:堅牢なUDPメッセージングシステム、比較的クリーンなプログラム設計、ミラードライバー(DemoForgeからの無料のDFMirageミラードライバー)が稼働しており、すべてにNATトラバーサルを実装しています対称NATを除くNATタイプ(企業ファイアウォールの状況に存在)。 画面の転送/共有については、ミラードライバーのおかげで、変更された画面領域が自動的に通知され、ミラードライバーの絶えず変化する画面ビットマップを自分のビットマップにマーシャリングできます。次に、画面領域をPNGとして圧縮し、サーバーからクライアントに送信します。物事はかなり良いように見えますが、十分に速くはありません。VNCと同じくらい遅いです(ところで、私はVNCプロトコルを使用せず、カスタムのアマチュアプロトコルを使用しています)。 最も遅いリモートデスクトップソフトウェアから最も速いリモートデスクトップソフトウェアまで、リストは通常​​、すべてのVNCのような実装で始まり、Microsoft Windowsリモートデスクトップ...、そして... TeamViewerまで続きます。CrossLoop、LogMeInについてはよくわかりません-私はそれらを使用していませんが、TeamViewerは非常に高速です。文字通りライブです。treeコマンドプロンプトでコマンドを実行したところ、20ミリ秒の遅延で更新されました。私のラップトップよりも数ミリ秒遅いWebを閲覧できます。Visual Studioでコードを垂直にスクロールすると、ラグ時間が50ミリ秒になります。これをすべて実現するには、TeamViewerの画面転送ソリューションがどれほど堅牢でなければならないかを考えてください。 VNCは、ポーリングベースのフックを使用して、画面の変化を検出し、ブルートフォース画面のキャプチャ/比較を最悪の場合に行います。最高の状態では、DFMirageのようなミラードライバーを使用します。私はこのレベルです。また、RFBプロトコルと呼ばれるものを使用しています。 Microsoft Windowsリモートデスクトップは、明らかにVNCよりも1段階高くなっています。StackOverflowのどこかから、Windowsリモートデスクトップは画面のビットマップを送信せず、実際の描画コマンドを送信すると聞きました。単純なテキストを送信できるため、これは非常に素晴らしいです(この長方形をこの座標で描画し、このグラデーションで色付けします)。リモートデスクトップは非常に高速で、自宅で作業するための標準的な方法です。また、RDPプロトコルと呼ばれるものを使用します。 今、TeamViewerは私にとって完全な謎です。どうやら、彼らはバージョン2のソースコードをリリースしました(TeamViewerは2012年2月現在のバージョン7)。人々はそれを読んで、バージョン2は役に立たないと言った-それは自動NATトラバーサルによるVNCのほんのいくつかの改善だ。 しかし、バージョン7 ...今は途方もなく高速です。つまり、実際にはWindowsリモートデスクトップよりも高速です。TeamViewerでDirectX 3Dゲームをストリーミングしました(1 fpsですが、WindowsリモートデスクトップではDirectXを実行することもできません)。 ちなみに、TeamViewerはミラードライバーなしでこれらすべてを行います。インストールするオプションがあり、少し速くなります。 質問 私の質問は、TeamViewerはどのくらい高速なのですか?それは不可能であってはなりません。24ビットの深さでも1920 x 1080の解像度がある場合(16ビットの深さはかなり醜いでしょう)、それでも未加工の6,220,800バイトです。libjpeg-turbo(大企業で使用されている最速のJPG圧縮ライブラリの1つ)を使用して30KBに圧縮すると(非常に寛大にしましょう)、TeamViewerのサーバーを介してルーティングするのに時間がかかります(TeamViewerは、トラフィックをプロキシするだけで、企業の対称NATをバイパスします彼らのサーバー)。そして、そのlibjpeg-turbo圧縮は圧縮に時間がかかります。高品質のJPG圧縮は、1920 x 1080のフルスクリーンショットで175ミリ秒かかります。そして、ホストのコンピューターがAtomプロセッサーを実行している場合、その数は増えます。TeamViewerが画面転送をどのように最適化したかがわかりません。繰り返しになりますが、小さなサイズの画像は高度に圧縮されている可能性があります。ただし、圧縮には少なくとも数十ミリ秒かかります。大きなサイズの画像は圧縮に時間がかかりませんが、処理に時間がかかります。どういうわけか、TeamViewerはこのプロセス全体を完了して、毎秒約20〜25フレームを取得します。私はネットワークモニタを使用しましたが、TeamViewerは500 Kbpsと1 Mbpsの速度でも遅延がありません(その転送速度ではVNCソフトウェアは数秒間遅延します)。私の中にtreeコマンドプロンプトテストでは、TeamViewerは1 Mbpsの速度でインバウンドデータを受信し、それでも5〜6 fpsを実行していました。VNCとリモートデスクトップはそれを行いません。では、どうやって? 答えはやや複雑で複雑になるため、TCPの代わりにUDPを使用しているためだと言ってはいけない場合は、$ 0.02を投稿しないでください(実際にTCPを同じように使用していると思いますか)。 StackOverflowのどこかにTeamViewer開発者がいることを願っています。 潜在的な答え 人々が返信したら、これを更新します。 私の考えは、まず第一に、TeamViewerは非常に細かいネットワーク制御を持っているということです。たとえば、大きなパケットをMTUサイズのすぐ下に分割し、トリップを無駄にすることはありません。おそらく、非常に高速なXOR画像比較とともに、画面の変化を検出するためのあらゆる種類のファンシーフックがあります。

7
Netty対Apache MINA
どちらもほぼ同じ機能を提供します。高性能TCPサーバーを開発するには、どちらを選択すればよいですか?長所と短所は何ですか? 参照リンク: Apache MINA(ソース) Netty(ソース)

11
TCPとUDPの違いは?
TCPとUDPの違いは何ですか? タイムクリティカルでないアプリケーションの場合はTCPが使用され、データの高速送信を必要とするゲームやアプリケーションにはUDPが使用されることを知っています。TCPがHTTP、HTTPs、FTP、SMTP、およびTelnetに使用されていることを知っています。UDPがDNSとDHCPに使用されていることを知っています。 しかし、なぜ?TCPとUDPのどの特徴がそれぞれのユースケースでそれを役にたつでしょうか?


5
ファイル転送のためのHTTPとFTPの比較
インターネット経由でファイルを転送する場合の利点(または制限)は何ですか? (私は両方のプロトコルの安全な形式を知っています。パフォーマンス、信頼性、ファイルサイズの制限などに関して個人的な経験を通して比較を聞きたいです。)

5
TCP:2つの異なるソケットがポートを共有できますか?
これは非常に基本的な質問かもしれませんが、それは私を混乱させます。 接続された2つの異なるソケットがポートを共有できますか?10万を超える同時接続を処理できるアプリケーションサーバーを作成していますが、システムで使用できるポートの数は約60 k(16ビット)です。接続されたソケットは新しい(専用)ポートに割り当てられるため、複数のソケットが同じポートを共有できない限り、同時接続の数はポートの数によって制限されます。だから質問。 事前に助けてくれてありがとう!

6
ソケットconnect()とbind()
connect()とbind()システムコールの両方が、ソケットファイル記述子をアドレス(通常はip / portの組み合わせ)に「関連付け」ます。彼らのプロトタイプは次のようなものです- int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); そして int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 2つの呼び出しの正確な違いは何ですか?とき1を使うべきconnect()ときとbind()? 具体的には、一部のサンプルサーバークライアントコードで、クライアントが使用してconnect()おり、サーバーがbind()呼び出しを使用していることがわかりました。理由は完全にはわかりませんでした。


8
Webサーバーはいくつのソケット接続を処理できますか?
共有、仮想、または専用のホスティングを取得する場合、サーバー/マシンが一度に64,000のTCP接続しか処理できない場所を読んだとしましょう。これは本当ですか?帯域幅に関係なく、どのタイプのホスティングでもいくつ処理できますか?HTTPはTCPで動作すると想定しています。 これは、64,000ユーザーしかWebサイトに接続できないことを意味しますか?さらにサービスを提供したい場合は、Webファームに移動する必要がありますか?

5
beginBackgroundTaskWithExpirationHandlerの適切な使用
いつどのように使用するかについて少し混乱していますbeginBackgroundTaskWithExpirationHandler。 Appleは、applicationDidEnterBackgroundデリゲートでそれを使用して、いくつかの重要なタスク(通常はネットワークトランザクション)を完了するためにより多くの時間をかけるために、例で示しています。 私のアプリを見ると、ほとんどのネットワーク関連が重要であるように思われます。アプリを起動したときに、ユーザーがホームボタンを押したらアプリを完成させたいと思います。 それで、すべてのネットワークトランザクションをラップすること(そして私は大きなデータチャンクをダウンロードすることについて話しているのではなく、ほとんどが短いxml)をbeginBackgroundTaskWithExpirationHandler安全な側面に置くことが受け入れられている/良い習慣 ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.