問題タブ [winsock2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows-xp - Windows XP および ICMPv6 上の WinSock2
ping6
WinSock2 を使用してプログラムで ICMPv6 エコー リクエスト ( ) を送信しようとしています。ICMPv6 チェックサムは、送信される IPv6 パケット全体に基づいて計算されます。そのため、私が理解していることから、OS(カーネル?)はそれを計算し、パケットを送信するときにICMPv6ヘッダーに書き込むことになっています。
これは SUSE Linux Enterprise Server 11 では非常にうまく機能しますが、Windows XP ではそうではないようです。チェックサムはデフォルトで設定した値 (ゼロ、Wireshark を使用して分析) のままになるため、受信側はそれを破棄し、応答しません。
この WinXP マシンでは IPv6 が正しく設定されています。Wireshark の助けを借りて、まったく同じコードを使用して送信された SUSE Linux サーバーからの ICMPv6 ping に正しく応答することがわかりました。したがって、Windows XP が ICMPv6 をサポートしていないわけではありません。しかし、Windows XP の WinSock2 はそうするのだろうか。
WinSock2 API はIPPROTO_ICMPV6
、生のソケットを作成するためのプロトコルを提供します。ICMPv6 チェックサムを自動的に計算するために設定する必要がある特別なソケット オプションはありますか、それとも他のトリックはありますか?
c - C プログラムで ws2_32.dll のリンカ エラーが発生するのはなぜですか?
Visual Studio 2010 でプログラムを作成しています。名前が付けられたファイルws2_32.dll
をプロジェクトにリンクできません。
どうすればそれができるか教えてもらえますか?
c - cを使用してwinsock2で画像を送信する方法
私はc(winsock2)で非常に単純なWebサーバーを書いています。
HTMLページのコンテンツを返すことができます。
現在、私が行っているのは、ファイルの内容をchar *バッファーに書き込み、「send()」を使用して送信することです。
画像(jpg、bmp)を読み込もうとすると、バッファに文字を書き込めませんが、一部の文字は「null」(0)です。
画像ファイル全体を送信するにはどうすればよいですか?
ありがとう。
c++ - ソケットrecv呼び出しは、スレッドを約1秒間フリーズします。5秒
私は、Windows7でブロッキングソケットを使用してC++で実装されたクライアントサーバーアーキテクチャを使用しています。すべてが特定のレベルの負荷まで正常に実行されています。メガバイトのデータを送受信するクライアントが2つ(たとえば> 4)ある場合、1つのクライアントとの通信が約5秒間フリーズすることがあります。その場合、他のすべてのクライアントは期待どおりに機能しています。
バッファサイズは8192バイトで、サーバー側のログは次のようになります。
TimeStamp(s.ms)-受信したバイト
…</p>
1299514524.618-8192
1299514524.618-8192
1299514524.618-0004
1299514529.641-8192
1299514529.641-3744
1299514529.641-1460
1299514529.641-1460
1299514529.641-8192
…</p>
その5秒以内に読み取ることができるのは4バイトだけのようです。さらに、凍結時間は常に約5秒であることがわかりました。4秒以下、6秒以上になることはありません...
何か案は?
よろしくお願いします
マイケル
c++ - Winsockのsend()は奇妙に機能します
接続を受け入れてクライアントにメッセージを送信する実験的なサーバープログラムを作成しようとしています。クライアントを接続させましたが、本当に奇妙なことをしなければメッセージを送信できないようです。
たとえば、このスニップにconn
は、接続されたソケットがあります。
cout << sendRes
、突然機能し、テストが表示されます。Telnetで、必要に応じて。
それで、知っている人に聞いてみたいのですが、なぜそういうふうに振る舞うのですか?
c++ - データの文字列を構造体のベクトルにトークン化しますか?
したがって、TCP winsock 接続を介して受信されている次のデータ文字列があり、各構造体が 1 つのレコードを表す構造体のベクトルに高度なトークン化を行いたいと考えています。
文字列内の各レコードは、キャリッジ リターンで区切られます。レコードを分割しようとしましたが、まだフィールドを分割していません:
コロン (内部フィールドセパレーター) を介して各レコードをさらにトークン化し、各構造体をベクターにプッシュするために、そのすべてのコードをもう一度繰り返す必要はまったくないようです。これを行うためのより良い方法があると確信しているか、設計自体が間違っている可能性があります。
助けてくれてありがとう。
c++ - accept() への不適切な呼び出しの処理に関する懸念
私は個人的な学習目的でMUDサーバーを作成していますが、幸いなことに、ソケットのものをいくつかのクラスにまとめることができ、すべてが正しく機能しているように見えます。サーバーは接続をリッスンして受け入れ、現在クライアントからテキストを取得してすぐに送り返します。
問題は、WSAEWOULDBLOCK または有効なソケット以外の何かを返す accept() の呼び出しをどうするかよくわからないということです。新しいソケットを 0 にリセットして戻るだけで、何か問題が発生したというエラー メッセージが表示されるのでしょうか? これは私が現在行っていることですが、20回発生した場合はサーバーをシャットダウンします.
TopSocket と NewSocket は SOCKET 型で、ファイル スコープで宣言されています。SocketList は MUDSocket* の std::list であり、MUDControlSocket は MUDSocket からシングルトンとして派生します。
さらに情報が必要な場合はお知らせください。ご協力いただきありがとうございます。
winapi - サーバーに接続する複数のソケット クライアント
アプリケーションがサーバーへの複数のソケット接続 (約 1000 接続) を起動するシミュレーター アプリケーションを設計しています。システムはそれほど多くのクライアントを処理できないため、これらの接続を処理するためにできるだけ多くのスレッドを起動したくありません。Select を使用しても意味がありません。遅い可能性がある 1000 の接続をループする必要があるためです。このシナリオを処理する方法を教えてください。