WinSock関連の質問をします。

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Canalime
記事: 8
登録日時: 2005年6月03日(金) 13:39

WinSock関連の質問をします。

#1 投稿記事 by Canalime »

ABOUG 6-5のプログラムコードを元に
WinSockの使い方を勉強しているのですが、
CD-ROMにあったサンプルがデバッグ実行でさせると
必ず例外処理エラーが発生してしまいます。
以下がそのコードの一部です。
サンプルの中のGUIに関する部分を取り除いたものです。

何故かgethostbynameを実行すると例外処理になります。
また、WSAStartupはエラーを出していません。
あと、wsaData.szDescriptionの値が「WinSock 2.0」になっていたので
一応MAKEWORD(2,0)にしてみましたがダメでした。
ちなみにWin2000SP4上のAB4.01で実行しています。

コード: 全て選択

Sub SendMailThread()
    Dim buffer[255] As Byte
    Dim szServerName[255] As Byte      'Server名
   lstrcat(szServerName,"server.domain")

    'WinSock Ver1.1の初期化
    Dim wsaData As WSADATA          'ソケットの初期化情報
    WSAStartup(MAKEWORD(1,1),wsaData)

    'Serverを探す
    Dim lpHost As *HOSTENT          'ホスト情報
    lpHost=gethostbyname(szServerName)
--/* from Canalime */--  
c

#2 投稿記事 by c »

Win32API: WSAStartupの説明に

※プロジェクト内でこの関数を使用するときは、プロジェクトオプション(メニュー「表示」→「プロジェクトオプション」)の「ソケットAPIを使用する」にチェックを入れて下さい。

と書いてあったんですがこれはOKですか?
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#3 投稿記事 by hira »

私の環境ではちゃんと動作しましたよ。
"server.domain" の部分を現実に存在するサーバー名に変えてみてはいかがですか?
situmon
記事: 35
登録日時: 2005年5月31日(火) 09:39
お住まい: 岐阜

とりあえず・・・

#4 投稿記事 by situmon »

下にある、
http://www.discoversoft.net/forum/viewt ... 5dc1b9397d
この記事を参考にしてみてください。
サーバが無いなら、この記事中の私の作ったツールで実験してみてください。
Canalime
記事: 8
登録日時: 2005年6月03日(金) 13:39

状況の補足です

#5 投稿記事 by Canalime »

server.domainの部分は実際にはYahoo等で実験しています。
上で書いたコードの元になっているCD-ROMに入っていた
コードでも同様のエラーが発生します。
サンプルの方も私が抜き出した方もいずれも
プロジェクトオプションは正しく設定してあります。
サンプルをリリースコンパイルして実行すると何故かメールが送信できました。

どうしてデバッグで例外が出るのでしょう?
もしかしてWinsockを利用するに当たって
停止させるとまずいサービスとか相性の悪いソフトとかがあるのでしょうか?
それともDLLファイルか何かがおかしいという可能性もあるのでしょうか?
--/* from Canalime */--  
返信する