問題タブ [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.

0 投票する
2 に答える
2709 参照

delphi - 1つのPChar変数のGetMemは、他のPChar変数の内容を変更します

だから、私は次の問題を抱えています。2つのPChar変数があります。最初にメモリを割り当て、いくつかの操作を行い、2番目の変数にメモリを割り当てます-このステップで、最初の変数に不正な値が含まれています(デバッグ中に見ました)。コードは次のとおりです。

ライン上

可変のHEADER値を探すと、手順の最初に見たときと同じではなく、驚くべきことがわかりました。どうすれば修正できますか?

0 投票する
2 に答える
447 参照

plugins - FireBreath FB::PluginWindowWin インクルードの問題

Directx control in browser pluginの回答の手順に従おうとしました

しかし、 http://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/ FireBreath Tips: Drawing on Windows に記載されているソリューションを追加したとき

"1. プラグイン オブジェクトをウィンドウ固有にする

EVENTTYPE_CASE で指定されたイベント ソースのタイプを FB::PluginWindowWin (およびハンドラーのタイプ) に変更すると、必要な方法でオブジェクトがキャストされます。"

私は119個のエラーを受け取りました。すべてがwinsock2.hファイルにあり、これは他のファイルに含まれており、再定義、異なるリンケージと言っています。何をすべきか?

ありがとう、サラ

0 投票する
3 に答える
26371 参照

c++ - WINSOCK-存在しないIPでの接続試行のタイムアウトを設定しますか?

私はC++でRTSPソースフィルターを開発しており、WINSOCK2.0-ブロッキングソケットを使用しています。

ブロッキングソケットを作成するときは、次のSO_RCVTIMEOように3秒に設定します。

フィルタが接続しようとしIP_ADDRESS:554ます(554はRTSPサーバーポートです)。ポート554でそのIPをリッスンしているサーバーがある場合、すべてうまくいきますが、次のようになります。

  1. 私のフィルターが既存のIPアドレスへのソケットを作成するが、誰もリッスンしていないランダムなポートで、connect()3秒間待機し、を返す場合WSAETIMEDOUT。したがって、3秒後、提供されたURLが不正であることがわかります。

  2. フィルタが存在しないIPアドレスへのソケットを作成し、それを接続しようとすると、SOCKET_ERRORを返す前に約10秒間ハングします。したがって、SO_RCVTIMEOIPがネットワーク上に存在しない場合は無視されます...

質問: 2番目のケースでは、存在しないIPのタイムアウトを設定するにはどうすればよいですか?IPが存在するかどうかを確認するために最初にICMPPINGを送信する必要がありますか、それともそのような他のチェックを実行する必要がありますか?

どんな助けでもありがたいです。ありがとう。:)

私の問題への答え

私はブロッキングソケットを使用しているのでconnect()、接続が確立されるまで、またはホストが応答していないか、接続を拒否しているために接続が失敗するまで、ブロックを呼び出します。ソケットのタイムアウトを3秒に設定し、存在しないホストに接続しようとすると、PC(クライアント)はSYNフラグが設定されたTCPパケットを送信して、スリーウェイハンドシェイクを開始します。通常、ホストは、起動している場合、フラグが設定されたTCPパケットで応答しACKSYNクライアント(me)はACKフラグが設定されたTCPパケットを送信します。次に、接続が確立されます。ただし、ホストがダウンしてSYN送信された場合、クライアントは3秒のタイムアウトが期限切れになるまで待機してから、TcpMaxConnectRetransmissionsMICROSOFT ARTICLE)ホストは稼働している可能性がありますが、パケットが失われる可能性があるため、レジストリ設定に到達しますSYN...私のWindows XPではこの設定が4になっていると思います。したがって、送信を試みるたびにSYN3秒待機し、4番目のときはtryは失敗し、SOCKET_ERROR(12秒後に)戻りWSAETIMEDOUT、最後のWSAエラーとして設定されます。

connect()これを回避する方法は、非ブロッキングソケットを使用し、Martin Jamesが提案したように、接続試行時間を手動で測定しようとすることです(現在はブロックされないため)。

もう1つの方法は、レジストリをいじることです。これが最後の手段です...

0 投票する
1 に答える
120 参照

c++ - デバッガーでの Winsock2 データ損失

オーバーラップ I/O と組み合わせて Winsock2 を使用しています。これは、WSAOVERLAPPED 構造を使用して WSARecv を呼び出し、後でデータを WSAWaitForMultipleEvents で待機することを意味します。

デバッガーでアプリケーションを停止している間に、アプリケーションに送信されたデータが失われているように見えるという奇妙な観察をしました。このデータは OS のどこかに蓄積され、次に WSARecv が呼び出されたときに配信されると思いました。

私の仮定は間違っていますか?

0 投票する
1 に答える
238 参照

sockets - ソケット使用時の関数呼び出し規則に関するアドバイス

ソケットを使用して、クライアントの 32 ビット アプリケーションと 64 ビット アプリケーションの間で関数呼び出しを行う予定です。

関数を呼び出し、変数を渡し、ソケット インターフェイスを介してパラメーターを返すための最良のスキームは何でしょうか。クライアント コードとサーバー コードの両方を制御できるので、何でも実装できます。

私は、ソケットパケットを以下で構成することを考えていました: - 1 ワード: 関数名の長さ (文字数) - 文字列: 実際の関数名 - 1 ワード: 関数パラメーターの長さ (バイト単位) - 関数パラメーター

最も堅牢で拡張可能なアプローチを教えてください。おそらく、コンパイラ、Web サービス、または仮想マシンによる呼び出し規則で使用される原則を再利用できます。

前もって感謝します

0 投票する
1 に答える
1549 参照

c - 名前付き fd の WSAPoll :: 書き換え方法の提案が必要

POSIXCWindows(WinSocks 2.2)に移植しているコードがいくつかあり、(だけでなく)のMS実装に問題がありpoll()ます。

私は POSIX についてある程度の経験がありsocketsますが、WinSock2 についてはまったくの初心者です。MSDN で役立つ手がかりが見つからなかったので、ここで質問します。

関数は、2 番目のフィールドがconnect_to_addr()どのように見えるかを示すためのものです。fd

この一般的なイディオムを WinSocks で実装するにはどうすればよいですか? 提案をありがとう。

さらに良いことに、WSAPoll() は Vista 以降 ws2_32.dll にあります。XPで動作させるには?

0 投票する
4 に答える
2930 参照

c - ソケットと fd を決定する

UNIXでは、すべてが関数のファイルアプローチです。 は、Win32 ではサポートされていません。read()write()close()

私はそれをエミュレートしたいのですが、WinSocks2sockソケットまたはfdを区別する方法がわかりません。

これは次のように機能するはずです。


次のように使用するための実装方法is_net_socket:

0 投票する
1 に答える
753 参照

gcc - Winsock2.h: FD_SET: 符号付き整数式と符号なし整数式の比較

winsock2.h からの抜粋:

fdtypeintsettypeを渡していfd_set *ます。警告の原因は #define for にあるようFD_SETSIZEです。同じヘッダーからの別の抜粋:

winsock2.h をインクルードFD_SETSIZEする前にを再定義しましたが、修正されていないようです。64U

0 投票する
1 に答える
692 参照

sockets - 以前にbind()呼び出しに渡されたソケット情報を取得するにはどうすればよいですか?

Winsock 2、windowsxpsp3。

以前はbind()関数に渡されていたソケットがありますが、この情報をソケットから取得したいと思います。具体的には、ソケットがバインドされているポート番号が必要です。私が持っているのはSOCKETインスタンスだけです。

どうすればこれを行うことができますか?ちなみにソケットはUDPです。

私の目的は、新しいraw UDPソケットを作成し、代わりにipヘッダーとudpヘッダーを作成し、rawソケットを介して情報をトンネリングすることですが、何を送信するかわからないため、送信元ポートに何を入れるかわかりません。にバインドされていました。