問題タブ [wsacleanup]

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 投票する
3 に答える
6572 参照

sockets - WSAStartupとWSACleanupの費用はいくらですか?

ソケットを使用してサーバーからデータをダウンロードするc++win32プログラムがあります。

Windowsでソケットを使用する前に、WSAStartupを呼び出す必要があります。MSDNによると、「WSAStartupへの呼び出しが成功するたびにWSACleanupへの呼び出しが必要です。実際のクリーンアップを実行するのは最後のWSACleanup関数呼び出しのみです。」

私にとって最も簡単な方法は、サーバーからデータをダウンロードするたびにWSAStartup/WSACleanupを呼び出すことです。ほとんどの場合、一度に1つの接続しかないため、WSACleanupが実際のクリーンアップを実行します。

だから私は疑問に思っています、WSAStartupとWSACleanupのコストは何ですか?私は実際のクリーンアップを実行することを意味します。WSAStartupとWSACleanupの呼び出しが、ソケット接続全体と比較して短時間しか続かない場合は、簡単な方法を使用できます。そうでない場合は、プログラムを終了するときにのみWSACleanupを呼び出すように注意する必要があります。

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

c++ - WSACleanup と atExit

atExit 関数で WSACleanup を登録してもよろしいですか? コード内のさまざまなポイントで終了できるアプリケーションがいくつかあるため、コード全体で WSACleanup を配置することは避けたいと考えています。現在、これらすべてのアプリケーションで使用される dll があるため、DllMain を介して WSAStartup / WSACleanup を呼び出しています。ただし、Microsoft は、デッドロックが発生する可能性があるため、DllMain を介して WSAStartup / WSACleanup を使用しないことを強く推奨しています。WSAStarup を DllMain から移動し、Windows ソケット ライブラリにアクセスする前に、すべてのアプリケーションのコード内のある時点でこれを呼び出すことができます。そして、WSAStartup を呼び出すとすぐに、atExit 関数を使用して WSACleanup への呼び出しを登録します。誰もこのアプローチの経験がありますか? ありがとう!

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

c++ - WindowsソケットWSACleanupC++

プログラムでソケットを使用しています。を追加したためWSAStartup。私のアプリケーションは正常に動作します(停止のシグナルを受け取るまでは常に稼働しています)。WSACleanupシグナルを受け取った後、プログラムの最後に関数を書くとクラッシュし、削除すると正常に終了するという問題が止まります。

ありがとう

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

c++ - WSACleanupでboost::shared_ptrを使用する

次のように、関数がスコープ外になったときにWSACleanup()が呼び出されるように、boost::shared_ptrを使用したいと思います。

これはコンパイルされません、

Error 1 error C2197: 'int (__stdcall *)(void)' : too many arguments for call C:\projects\svn-5.3\ESA\Common\include\boost\detail\shared_count.hpp 116

何かご意見は?

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

c++ - WSACleanup が原因で SQL Server が消えてしまいました。

もうどうしたらいいのかわからないので教えていただきたいです。C ++で作成されたシミュレーターがあり、ユーザーからのID入力を受け入れ、ローカルホストのみにあるデータベース(mysqlワークベンチで作成)にあるかどうかをチェックします。

問題は、シミュレーターがサーバーとして機能する別のコンピューターに接続されていることです (winsock を介して接続されています)。サーバーが稼働している場合、またはすべての入力が間違っている場合は正常に動作しますが、サーバーがダウンしている場合 (私のコードはサーバー pc に再度接続しようとするため、WSACleanup を呼び出す必要があります) 正しい値を 1 つ入力した後、別の mysql_query は、mysql サーバーがなくなったというエラーを返します。その後、プログラムは mysql_num_rows になると壊れます。

このコードは別の関数にあり、それらを 1 つずつコメントアウトすると、エラーは WSACleanup() が原因であることがわかりました。WSACleanup 行がない場合、クエリは正常に実行されます。

誰かが私を助けてくれることを願っています。

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

windows-ce - WSACleanup を呼び出さない場合の結果

ヘッドレス Windows CE 6.0 デバイスで実行するアプリケーションを設計中です。アイデアは、起動時に開始され、電源がオフになるまで実行されるアプリケーションを作成することです。(基本的にはサービスのように見えますが、アプリケーションは、停止/デプロイ/開始/プロセス プロシージャへのアタッチという面倒な作業がなくてもデバッグが容易です)

私の懸念は、開発中に何が起こるかです。アプリケーションをデバッグ/デプロイすると、フレンドリーで簡単な方法でアプリケーションを閉じる方法がわかりません。(より良い/ユーザーフレンドリーな方法でこれを行うことができるかどうか提案してください) デバッガーを停止するだけで、結果は WSACleanup が呼び出されません。

では、質問です。WSACleanup を呼び出さないとどうなりますか? デバッガーを使用して、winsock アプリケーションを再度起動して実行することはできますか? それとも、そうするのを妨げるリソース リークがありますか?

前もってありがとう、ジェフ

0 投票する
0 に答える
821 参照

windows - プログラムを終了する前に WSACleanup を呼び出す必要がありますか?

を呼び出す Windows ソケット プログラム (XP 以降) がありますWSAStartupWSACleanupプログラムが終了する前に呼び出す必要がありますか? そうしないと、悪影響はありますか?特に次のとおりです。

ただの出品物とは異なりexit(0)ます。Win16WSACleanupでは、システム リソースがリークする可能性があるのを省略すると、まだそうであることがわかります。