問題タブ [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.
delphi - 1つのPChar変数のGetMemは、他のPChar変数の内容を変更します
だから、私は次の問題を抱えています。2つのPChar変数があります。最初にメモリを割り当て、いくつかの操作を行い、2番目の変数にメモリを割り当てます-このステップで、最初の変数に不正な値が含まれています(デバッグ中に見ました)。コードは次のとおりです。
ライン上
可変のHEADER値を探すと、手順の最初に見たときと同じではなく、驚くべきことがわかりました。どうすれば修正できますか?
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ファイルにあり、これは他のファイルに含まれており、再定義、異なるリンケージと言っています。何をすべきか?
ありがとう、サラ
c++ - WINSOCK-存在しないIPでの接続試行のタイムアウトを設定しますか?
私はC++でRTSPソースフィルターを開発しており、WINSOCK2.0-ブロッキングソケットを使用しています。
ブロッキングソケットを作成するときは、次のSO_RCVTIMEO
ように3秒に設定します。
フィルタが接続しようとしIP_ADDRESS:554
ます(554はRTSPサーバーポートです)。ポート554でそのIPをリッスンしているサーバーがある場合、すべてうまくいきますが、次のようになります。
私のフィルターが既存のIPアドレスへのソケットを作成するが、誰もリッスンしていないランダムなポートで、
connect()
3秒間待機し、を返す場合WSAETIMEDOUT
。したがって、3秒後、提供されたURLが不正であることがわかります。フィルタが存在しないIPアドレスへのソケットを作成し、それを接続しようとすると、SOCKET_ERRORを返す前に約10秒間ハングします。したがって、
SO_RCVTIMEO
IPがネットワーク上に存在しない場合は無視されます...
質問: 2番目のケースでは、存在しないIPのタイムアウトを設定するにはどうすればよいですか?IPが存在するかどうかを確認するために最初にICMPPINGを送信する必要がありますか、それともそのような他のチェックを実行する必要がありますか?
どんな助けでもありがたいです。ありがとう。:)
私の問題への答え
私はブロッキングソケットを使用しているのでconnect()
、接続が確立されるまで、またはホストが応答していないか、接続を拒否しているために接続が失敗するまで、ブロックを呼び出します。ソケットのタイムアウトを3秒に設定し、存在しないホストに接続しようとすると、PC(クライアント)はSYN
フラグが設定されたTCPパケットを送信して、スリーウェイハンドシェイクを開始します。通常、ホストは、起動している場合、フラグが設定されたTCPパケットで応答しACK
、SYN
クライアント(me)はACK
フラグが設定されたTCPパケットを送信します。次に、接続が確立されます。ただし、ホストがダウンしてSYN
送信された場合、クライアントは3秒のタイムアウトが期限切れになるまで待機してから、TcpMaxConnectRetransmissions
(MICROSOFT ARTICLE)ホストは稼働している可能性がありますが、パケットが失われる可能性があるため、レジストリ設定に到達しますSYN
...私のWindows XPではこの設定が4になっていると思います。したがって、送信を試みるたびにSYN
3秒待機し、4番目のときはtryは失敗し、SOCKET_ERROR
(12秒後に)戻りWSAETIMEDOUT
、最後のWSAエラーとして設定されます。
connect()
これを回避する方法は、非ブロッキングソケットを使用し、Martin Jamesが提案したように、接続試行時間を手動で測定しようとすることです(現在はブロックされないため)。
もう1つの方法は、レジストリをいじることです。これが最後の手段です...
c++ - デバッガーでの Winsock2 データ損失
オーバーラップ I/O と組み合わせて Winsock2 を使用しています。これは、WSAOVERLAPPED 構造を使用して WSARecv を呼び出し、後でデータを WSAWaitForMultipleEvents で待機することを意味します。
デバッガーでアプリケーションを停止している間に、アプリケーションに送信されたデータが失われているように見えるという奇妙な観察をしました。このデータは OS のどこかに蓄積され、次に WSARecv が呼び出されたときに配信されると思いました。
私の仮定は間違っていますか?
sockets - ソケット使用時の関数呼び出し規則に関するアドバイス
ソケットを使用して、クライアントの 32 ビット アプリケーションと 64 ビット アプリケーションの間で関数呼び出しを行う予定です。
関数を呼び出し、変数を渡し、ソケット インターフェイスを介してパラメーターを返すための最良のスキームは何でしょうか。クライアント コードとサーバー コードの両方を制御できるので、何でも実装できます。
私は、ソケットパケットを以下で構成することを考えていました: - 1 ワード: 関数名の長さ (文字数) - 文字列: 実際の関数名 - 1 ワード: 関数パラメーターの長さ (バイト単位) - 関数パラメーター
最も堅牢で拡張可能なアプローチを教えてください。おそらく、コンパイラ、Web サービス、または仮想マシンによる呼び出し規則で使用される原則を再利用できます。
前もって感謝します
c - 名前付き fd の WSAPoll :: 書き換え方法の提案が必要
POSIX
C
Windows(WinSocks 2.2)に移植しているコードがいくつかあり、(だけでなく)のMS実装に問題がありpoll()
ます。
私は POSIX についてある程度の経験がありsockets
ますが、WinSock2 についてはまったくの初心者です。MSDN で役立つ手がかりが見つからなかったので、ここで質問します。
関数は、2 番目のフィールドがconnect_to_addr()
どのように見えるかを示すためのものです。fd
この一般的なイディオムを WinSocks で実装するにはどうすればよいですか? 提案をありがとう。
さらに良いことに、WSAPoll() は Vista 以降 ws2_32.dll にあります。XPで動作させるには?
c - ソケットと fd を決定する
UNIXでは、すべてが関数のファイルアプローチです。 は、Win32 ではサポートされていません。read()
write()
close()
私はそれをエミュレートしたいのですが、WinSocks2sock
でソケットまたはfdを区別する方法がわかりません。
これは次のように機能するはずです。
次のように使用するための実装方法is_net_socket
:
gcc - Winsock2.h: FD_SET: 符号付き整数式と符号なし整数式の比較
winsock2.h からの抜粋:
fd
typeint
とset
typeを渡していfd_set *
ます。警告の原因は #define for にあるようFD_SETSIZE
です。同じヘッダーからの別の抜粋:
winsock2.h をインクルードFD_SETSIZE
する前にを再定義しましたが、修正されていないようです。64U
sockets - 以前にbind()呼び出しに渡されたソケット情報を取得するにはどうすればよいですか?
Winsock 2、windowsxpsp3。
以前はbind()関数に渡されていたソケットがありますが、この情報をソケットから取得したいと思います。具体的には、ソケットがバインドされているポート番号が必要です。私が持っているのはSOCKETインスタンスだけです。
どうすればこれを行うことができますか?ちなみにソケットはUDPです。
私の目的は、新しいraw UDPソケットを作成し、代わりにipヘッダーとudpヘッダーを作成し、rawソケットを介して情報をトンネリングすることですが、何を送信するかわからないため、送信元ポートに何を入れるかわかりません。にバインドされていました。