問題タブ [winsock]
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.
c++ - winsock の奇妙さ (c++)
IPv4 または IPv6 の文字列表現 (「66.102.1.147」[google] など) をバイナリ ネットワーク バイト順の形式に変換する「inet_pton」という関数を実装しようとしています。私のコードの関連部分は次のとおりです。
したがって、src は着信 IP 文字列です。ただし、常に次のようなエラーが発生します
getaddrinfo() は「66.102.1.147」の IP アドレス情報を取得できませんでした
Winsock の経験がある人はコメントできますか? 別の方法、関数も試しました
ただし、無効な IP 文字列を示すエラー コード WSAEINVAL が常に返されます。これは私には意味がありません。IDE として VS2005 を使用しています。
c++ - win32を使ったソケット通信プログラムの書き方
新しい人は、win32 でのソケット プログラミングについて学びたいと思っています。私はMFCについて少し知っていますが、プログラマーから内部の詳細を隠すだけなので、それは始めるのに良いポイントではありません.
winsock - Winsock での実用的な一般マルチキャスト
Windows で winsock (MSMQ ではない) レベルで PGM を使用した経験のある人はいますか? これは便利で信頼性の高いマルチキャスト プロトコル (TIBCO Rendezvous のようなもの) のように見えます。ネイティブの完了ポート ベースの I/O で実行すると、このようなものを実際に飛ばすことができると思います。
私は C++ レベルで、いくつかの boost::asio サポートを作成することによってそれに手を出しました。また、SocketAsyncEventArgs を介して C# で実行することもできました。そして、誰かがそれにいつでも費やして、何か観察があるかどうか疑問に思いましたか?
delphi - Delphi、すべてのローカル IP を取得するには?
DelphiでローカルIPアドレスの簡単なリスト(tstringなど)を取得する方法を知っている人は誰でも。
私は他の関連する質問を見てきましたが、それらをデルフィに変換することに頭を悩ませているようです。
c++ - send()、Winsock エラー 10038 を返す
問題:
- send()を呼び出すと、ソケット ハンドルに対してWinsock エラー10038が返されます
図:
- accept() 、 0を返します
- 接続ごとに新しいスレッドが作成されます
- send()、(スレッド関数内) は10038を返します
イラスト: - スレッド機能で
提案:
- 可能性、競合状態?
- I/O 完了ポートを使用できますが、この段階では使用できません
c++ - クライアントからサーバーに送信されたパケットの数を数えますか?
したがって、Win32プログラミングとソケットに関する割り当てはほぼ完了しましたが、転送に関するいくつかの統計を生成して分析する必要があります。私が問題を抱えている唯一の部分は、クライアントからサーバーに送信されたパケットの数を把握する方法です。
送信されるデータは可変長である可能性があるため、受信した合計バイト数を#define'd値で除算することはできません。
すべてを行うには非同期呼び出しを使用する必要があるため、サーバーのソケットに対して受け取るFD_READメッセージごとにカウンターをインクリメントしようとしています。ただし、潜在的に大きなファイルサイズを受け入れる必要があるため、約64kのバッファーサイズでrecv/recvfromを呼び出す必要があります。小さなパケット(az)を送っても問題ありません。しかし、1024文字の文字列を10x送信すると、サーバーは2つまたは3つのパケットを受信したと報告しますが、送受信されたバイト数に関しては0%のデータ損失があります。
パケット数を取得する方法はありますか?
前もって感謝します :)
c++ - 高周波データにどう対処するか?
ストックデータを受信し、ソケットを介して別のアプリケーションに転送する C++ アプリケーションがあります (サーバーとして機能します)。
実際には、WSASend
関数は数秒後にエラーコード 10055 で戻り、それがエラーメッセージであることがわかりました
「利用可能なバッファスペースがありません。システムに十分なバッファスペースがないか、キューがいっぱいだったため、ソケットでの操作を実行できませんでした」。
問題が発生するのは、数分で 1 日分のデータ (約 130 MB) を受信しているため (これは比較的大きいと思います)、市場時間後にアプリケーションを実行した場合にのみ発生します (これは比較的大きいと思います)。これは堅牢性テストとして行っています。
関数を使用して送信バッファ SO_SNDBUF を増やそうとしましたsetsockopt
が、同じ問題がまだ残っています。どうすればこの問題を解決できますか? これは受信バッファに関連していますか?
送信の詳細:
完全なメッセージごとに、重複したソケットを使用する send メソッドを呼び出します
編集:誰かがC++で高周波データを処理するための一般的なガイドラインを与えることができますか?
sockets - プロセス間のソケット受け渡し
Windowsでプロセス間(同じアドレス空間ではない)にソケットを渡す方法はありますか?
この情報Shared Socketsを見つけたので、それが可能であると信じています。
" WSADuplicateSocket 関数が導入され、プロセス間でソケットを共有できるようになりました"...
詳細 : Apache のソース コード (httpd-2.2.11-win32-src.zip) には、コメント付きの api WSADuplicateSocket の使用法があります。
[編集] 最近、この質問に関する素晴らしいサンプルを見つけました。
管理されていない世界で複製がどのように行われるか - ソケットの複製 - パート 1
管理されていないプロセスからソケットを転送することは可能ですか? - ソケット複製 - パート 2
c++ - winsockでベクトルを配列として再利用するより効率的な方法は?
私は現在、Winsockを介してデータを送受信するためのcスタイルの配列としてベクトルを使用しています。
std :: vectorがあり、それを「バイト配列」として使用しています。
問題は、送信ごとに1つ、受信ごとに1つ、合計2つのベクトルを使用していることですが、私が行っていることはかなり非効率的です。
例:
SendDataは、sendを適切な回数だけ呼び出すだけで、すべてが正常に機能することを保証します。
ともかく。毎回使用する前にベクトルをゼロにしない限り、エラーが発生し、内容が重複します。私がしていることを行うためのより効率的な方法はありますか?各呼び出しでバッファ全体をゼロにすることはひどく非効率的であるように思われるからです。
ありがとう。