プロが教える店舗&オフィスのセキュリティ対策術

WINSOCKのWSACleanupについて質問です。
現在、ソケット情報を3つ保有しているソケット通信プログラムがあります。
そのうちの1つのソケットを使用してデータの送受信を行っている際に、何らかのエラーが発生した場合、closesocketを行った後、WSACleanupを使用すると、
エラーのあったソケット情報だけでなく、
他の2つのソケット情報まで強制的に破棄してしまうのでしょうか?
それとも、WSACleanupでこのソケット情報を破棄みたいな指定はできるのでしょうか?
こんな状況な場合は、オープン時にソケット情報の
初期化を行っていれば、WSACleanupは行わなくても
大丈夫でしょうか?
何か知識をお持ちの方がいらっしゃいましたら、
助言、宜しくお願いいたします。

A 回答 (2件)

>初期化すればWSACleanupは使用しなくても


>問題ないでしょうか?

そうです。なんどもいうようですが、他のソケットが
通信中なのにWSACleanupをしてはいけません。
    • good
    • 0

WSACleanupってそもそも何の引数もとれませんよね。


これはソケットに対して行うものではなく
プロセス終了前に呼び出すものです。

WSAStartupとWSACleanupはひとつのアプリケーション(プロセス)で
基本的に1対あれば十分で、普通それ以上必要としません。

>WSACleanupを使用すると、
>エラーのあったソケット情報だけでなく、
>他の2つのソケット情報まで強制的に破棄してしまうのでしょうか?

そのままソケット通信を続けて
どういう挙動を起こすかはわかりませんが、基本的にしてはいけません。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
今回のような
アプリケーション:ソケットプログラムが
多:1の場合、複数のソケット情報をもつしか
方法がないと思います。
ということは、他のソケット情報は破棄したくないので、
Closesocketしたソケット情報をオープン時に
初期化すればWSACleanupは使用しなくても
問題ないでしょうか?

お礼日時:2005/09/21 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!