こんばんわ。
winsockを用いてC言語によるソケットプログラミングを行なってます。
ソケットを(SOCKET s1,s2)用いているのですが、両者はローカルで指定しています。しかし、私のプログラミングの記述の仕方が悪く・・・
もし、エラーが発生した場合、s1はクローズできる仕様なのですが・・・s2をクローズできないプログラムになってしまいました。
エラーが発生時、プログラム自体を終了する・・とした場合、ソケットはクローズされるのでしょうか?
また、テキストには必ずソケットをオープンした場合クローズする必要があると書いてあるのですが、どういう意味でしょうか?
ローカルからグローバル変数へ変更すれば解決できるのですが、グローバル変数へ変更しても大丈夫でしょうか?
よろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ソケットハンドル自身をグローバル変数にするのが恐いのであれば、
グローバル変数でフラグをとり、エラーが起きたらフラグを立て、その値を見てクローズすればどうでしょう?
No.1
- 回答日時:
そういう場合、クローズというか破棄されるという方が近いかと。
一応、Windowsはリソースを回収しますが、ゴミ扱いみたいなもので、丁寧には扱ってくれません。
# リソースを取り上げたいだけなので、まぁ地上げみたいなものでしょうか。
セッションとか張ってると相手に正しく終了が通知されないとかありますし、
そもそものプログラムのお約束として、開いたら閉じるのは基本です。
# 自動で閉じるデストラクタ等も昨今はありますが、WinSock等の
# C言語風APIでは、閉じない≒バグ、みたいなものです。
テキストが指摘しているのもこういうことが背景にあるのでしょう。
グローバルに変更して大丈夫か否かは、見てみないことにはなんともいえません。
# 水に答えられたら憶測に終始するか、実は関係者か超能力者か…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- 英語 Further pooled estimate of proportion of survival 2 2022/07/09 20:16
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- デスクトップパソコン 初めまして、こんばんは。 DELLのWorkstationに詳しい方にお尋ねさせて頂きたく御質問いた 4 2023/04/25 19:32
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
Winsockで接続待ちタイムアウト...
-
UDP通信におけるbind関数について
-
TCP/IP通信でのコネクシ...
-
ソケットを閉じる操作が・・・
-
名前付きパイプの通信ポートに...
-
Socketの使用方法について
-
ソケットプログラミングについて
-
ソケットのクローズについて
-
空きポートの取得方法
-
MFCソケットについて
-
ソケット通信の送受信遅延-02 ...
-
パケット通信時のIPヘッダの取...
-
WinSockでの通信プログラムがう...
-
ソケットでクライアントのipア...
-
SendRequestでヘッダが受信され...
-
ソケットのrecvの戻り値が0
-
C言語(Windows)から...
-
送信したデータの一部が文字化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
UDP通信におけるbind関数について
-
recv関数でフリーズしてしまう
-
VB6のwinsockでconnectできない
-
UDP通信する時に、相手にどうや...
-
ソケット通信 同じポート番号...
-
ソケットのrecvの戻り値が0
-
UdpClient 送信元のIPアドレ...
-
Winsockで接続待ちタイムアウト...
-
ソケットを用いた1対多通信につ...
-
ソケットでクライアントのipア...
-
ソケットのクローズについて
-
相手のIPアドレスを取得する方法
-
SIPがNATを越えられない理由
-
Socket通信の0バイト受信について
-
CreateFile関数でCOMポートが開...
-
Connectエラーが出てしまう・・...
-
同じLAN内パソコンのIPアドレス...
-
送信したデータの一部が文字化...
おすすめ情報