[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/04/10(Tue) 18:17
投稿者名:MOONEY
Eメール:
URL :
タイトル:
Winsockのソケットについて
こんにちわ。いつもお世話になっております。

とあるアプリでWinsockを使ってサーバーと通信して
います。開発環境はVB6.0(SP5)、WinXP Proです。
サーバーとの一連のやり取りを終えたあとには必ず
ソケットの破棄と、WSACleanup()を実施しています。
(もちろんエラー時にも行っております。)

そのアプリを終了させたときに時々、下記エラーが
発生します。

==========================================================================
実行時エラー -2147168234(8004D016)':
SQL30081N 通信エラーが検出されました。使用された通信プロトコル:”TCP/IP”
使用中の通信API:”SOCKET”エラーが検出されたロケーション:<サーバーのIP
アドレス> エラーを検出した通信関数:”send”プロトコル固有のエラーコード
:”10093”、”*”、”*”SQLSTATE=08001
==========================================================================

上記内容はソケットの破棄や通信が正しく終了できていないと
いうことなのでしょうか。
ソケットの残存状況などを調べる関数などはございますか。

投稿時間:2007/04/11(Wed) 16:53
投稿者名:y4yama
Eメール:
URL :
タイトル:
Re: Winsockのソケットについて
> 使用中の通信API:”SOCKET”エラーが検出されたロケーション:<サーバーのIP
> アドレス> エラーを検出した通信関数:”send”プロトコル固有のエラーコード
> :”10093”、”*”、”*”SQLSTATE=08001

的外れだったら、お許しください。
10093は、
WinsockInitが先に呼ばれるべき
とか、
WSANOTINITIALISED -- Successful WSAStartup not yet performed.
TCP networking has not been initialized on your computer.
とか説明が探せましたが、sendをしようとしていて、initializeがされてない、
と解釈できます。もしかして、ソフトでソケットの破棄はしててもsendをしようとしていませんか?

投稿時間:2007/04/11(Wed) 17:50
投稿者名:MOONEY
Eメール:
URL :
タイトル:
Re^2: Winsockのソケットについて
> 的外れだったら、お許しください。
> 10093は、
> WinsockInitが先に呼ばれるべき
> とか、
>  WSANOTINITIALISED -- Successful WSAStartup not yet performed.
>  TCP networking has not been initialized on your computer.
> とか説明が探せましたが、sendをしようとしていて、initializeがされてない、
> と解釈できます。もしかして、ソフトでソケットの破棄はしててもsendをしようとしていませ
んか?

ソースを確認しましたが、ソケットの初期化⇒send/recv⇒ソケットの破棄をしており
ます。エラーの場合ソケット破棄をして、処理をすべてぬけるようにしています。

ちなみに、ioctlsocket関数が影響をしているという可能性はありますかね。。。

投稿時間:2007/04/12(Thu) 10:18
投稿者名:y4yama
Eメール:
URL :
タイトル:
Re^3: Winsockのソケットについて
> ちなみに、ioctlsocket関数が影響をしているという可能性はありますかね
よくわかりませんです。中途半端な知識でResしたことを後悔もしてます・・
1.えっと、ソケットの初期化⇒send になってるときに、ユーザがソフトを終了する可能性があるなら、あやしいです
SendDataは同期モードで実行してるんですか。非同期だったらあやしいのでは・・・
2.MSDNライブラリVisualStudio6.0を見たら、
WSANOTINITIALISED  (10093)
Successful WSAStartup not yet performed.
Either the application hasn't called WSAStartup or WSAStartup failed.
The application may be accessing a socket which the current active task
does not own (i.e. trying to share a socket between tasks),
or WSACleanup has been called too many times.
と最後の行ですが、WSACleanupを不必要にcallすると出るようなことが書いてありましたが
これは既に考慮されてますか?
ホント、中途半端で申し訳ありません

投稿時間:2007/04/12(Thu) 16:38
投稿者名:MOONEY
Eメール:
URL :
タイトル:
Re^4: Winsockのソケットについて
> と最後の行ですが、WSACleanupを不必要にcallすると出るようなことが書いてありましたが
> これは既に考慮されてますか?
> ホント、中途半端で申し訳ありません

ご丁寧にありがとうございます。
ちょっと上記の点で思い当たる部分がございますので、
確認してみたいと思います。本当にありがとうござい
ました。