- - PR -
Socket.Exceptionでハンドルされていない例外
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-08 15:48
はじめまして、お邪魔します。
最近.NETを触るようになりました。 VBと比べていろいろできるようになったのを楽しみつつ、 VB.NETでFTPクライアントを作ろうと思い立ち、参考書を買って勉強しています。 その参考書を元にFTPクライアントを作っていたのですが、 Socketクラスを使って、接続先のIPとポートを取得して 接続を確立しようと言うメソッドでどうしてもエラーが起きます。 エラーメッセージの内容は、 >'System.Net.Sockets.SocketException' のハンドルされていない例外が > system.dll で発生しました。 と言うものです。 参考書の.NET Frameworkが2002なためもあってか、 TcpListenerコンストラクタなど、旧形式もいくらかありましたが 気づいた範囲内では修正しましたし、 サンプルプログラムがダウンロードできるので、 ダウンロードして実行してみても、同じエラーが出て途方に暮れています。 どなたか、ご教授お願いします。 | ||||||||||||
|
投稿日時: 2004-01-08 16:22
こんにちわ。諸農です。
これだけの情報では、ちょっとコメントし辛いものがありますね SDKの「SocketException」には次のような解説があります。 現時点で出来ることといえば、例外をトラップしてErrorCodeの値を 確認してみることかもしれません。
ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2004-01-08 16:55
>諸農さん
レスありがとうございます。 ネットワークにエラーが有った時にスローされるんですよね… 接続先IPは、レンタルしてるFTPサーバだし フリーのFTPクライアントで接続したら、ちゃんと接続できるんで プログラムの問題…だと思うんですが。 あと、エラーが出ているメソッドは ' Socksによってコントロールコネクションを確立するメソッド Public Sub Connect() Dim iphi As IPHostEntry = Dns.Resolve(Dns.GetHostName) Dim ipa As IPAddress = iphi.AddressList(0) Dim lep As New IPEndPoint(ipa, 0) Dim rep As New IPEndPoint(IPAddress.Parse(ip), port) sc = New Socket(AddressFamily.InterNetwork, _ SocketType.Stream, _ ProtocolType.Tcp) sc.Bind(lep) sc.Connect(rep) '←ここ rc = Receive() End Sub こんな感じです。下から二行目にあるReceiveは、後に作ったサーバからの レスポンスを受信するメソッドです。 サンプルプログラムをhttp://www.vbvbvb.net/jp/guide/ip/code.xml ここからダウンロードして実行してみたのですが、同様のエラーが出ます。 | ||||||||||||
|
投稿日時: 2004-01-08 17:09
いやいや、だから、プログラムがどのように間違っているから例外的状況になったのかを調べるために、
| ||||||||||||
|
投稿日時: 2004-01-08 17:38
諸農です。
コードを斜め読みしただけですが、 借りているサーバーのFTPサービスにアクセスしたいのに、 自分のマシンに対してソケットを開いていませんか? ご自分のマシンではFTPサービスは稼動していますか? デバッグ実行しながら確認してみてください。 #その書籍の該当するページには、環境の前提として #自マシンで云々といったことはかかれていませんか? ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2004-01-08 21:12
>Jittaさん
ありがとうございます。 教えてもらったコードに書き換えて実行してみました。 そこで、すいません…ErrorCode値と言うのはどこを見たら確認できるのでしょうか。 グーグルとMSDNで検索してみたのですが、結局わかりませんでした。 Jubeiさん> 重ね重ね、ありがとうございます。 参考書では、マイクロソフトのFTPサーバに接続するように設定していました。 章末に書いてある実行結果の画面でも、マイクロソフトのFTPサーバに接続していました。 この段階ではサーバにFTPコマンドを送信して、 受信したメッセージを表示するだけのプログラムなので、 自PCでFTPサービスが稼動しているかは…関係ありませんよね? | ||||||||||||
|
投稿日時: 2004-01-08 21:50
諸農です。
先の私のコメントを読んでいただけたかと思ったのですが。。 MSDN2003年10月リリース分より 「Platform SDK: Windows Sockets 2」 [Windows Sockets Error Codes] ms-help://MS.MSDNQTR.2003OCT.1041/winsock/winsock/windows_sockets_error_codes_2.htm
では、お尋ねしますが、
このコードの「Dns.GetHostName」の部分は、何が返ってきていますか? マイクロソフトのFTPサーバーのホスト名でしょうか? そこからResolveしたIPアドレスはマイクロソフトのFTPサーバーのアドレスですか? 先にも申しましたが、デバッグ実行で確認されましたか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2004-01-09 10:21
>jubeiさん
何度もありがとうございます。 すいません、指定していただいたURLにアクセスできませんでした。 まだErrorCode値はわかりません。 Dns.GetHostNameに返ってくる値は、私の確認の方法が悪いのでしょうが わかりませんでした。 デバッグ実行だとエラーが出る所まで一直線だったんで、 ステップインも試してみたのですが、混合モードでアセンブリが表示されて、 アセンブリは全然わからなかったので…… とりあえず何度も本を読み返してみたのですが、その行に触れている個所は ”変数iphiは、コントロールコネクションを確立するコンピュータのIPアドレスを取得するために、Dnsクラスのメソッドを利用しています。” ”コネクションの確立元IPアドレスは次のコードで取得しますが、Dnsクラスのメソッドについて説明します。Dns.GetHostNameメソッドは、コンピュータのドメインを取得するメソッドです。そして、Dns.Resolveメソッドは引数に与えられたドメイン名を名前解決します” ”つまり、上記のコードでは、コンピュータのドメイン名を取得して名前解決することで、IPアドレスを取得しています” と書いてたので、「ああ、そう言うもんなのか」とか思って勝手に納得してました…。 |
1|2|3|4
次のページへ»