VB.NET、telnet接続でネゴシエーションするには?(BASP21使用禁止)


ゆりうす  2004-11-05 11:37:12  No: 86495  IP: [192.*.*.*]

お世話になっております。VB.NET初心者ですが、質問です。

現在私はVisualStudioを利用し、VB.NETでUNIXクライアントを作成しております。
こちらの掲示板でも以前に何度か話題になっていたようですが、
過去ログから自力で作成するには、Winsock接続とネゴシエーションを行えば、
ようやくアカウント・パスワード送信→ログインの段階に進めることがわかりました。
しかし、接続までは進めましたが、ネゴシエーションを行う方法がわかりません。
C++やVBの例はWEB上で発見できましたが、VB.NETの例は発見できませんでした。

どのようにコーディングすればよろしいのでしょうか?
お手数ですが、ご教授お願い致します。
(注:タイトルにもありますが、BASP21は使用しないとします)

編集 削除
raki  URL  2004-11-05 13:11:45  No: 86496  IP: [192.*.*.*]

>VB.NETでUNIXクライアントを作成しております。

どのようなクライアントソフトを作成されているのでしょうか?


>接続までは進めましたが、ネゴシエーションを行う方法がわかりません。

プロトコルはなんですか?BASP21の代用ということから推測するに、
SMTP, POP3, FTP, HTTPのいずれかと思いますが、
SMTPの場合はSMTP認証がありますが、使わない場合が多いので、
残りの3つとなるでしょうか。

そもそも、何を行いたいのかがわかりません。
認証の方法もプロトコルによって違います。
また、VB.NETの場合、Winsockを使わなくても、
System.Net.Sockets名前空間にあるクラスで代用できます。
代表的なのはTcpClientクラスとUdpClientクラスでしょうか。

編集 削除
ゆりうす  2004-11-05 13:31:52  No: 86497  IP: [192.*.*.*]

すみません、説明不足でした。

>どのようなクライアントソフトを作成されているのでしょうか?

telnet接続でログイン後、UNIXサーバにコマンドを送信し、
その結果をUNIXクライアントで受信・・・させるための、
UNIXクライアントを作成しています。

>プロトコルはなんですか?BASP21の代用ということから推測するに、
>SMTP, POP3, FTP, HTTPのいずれかと思いますが、

プロトコルはこれらのいずれでもなく、TCPです。
TCPClientクラスを使用してます。

編集 削除
raki  URL  2004-11-05 13:48:42  No: 86498  IP: [192.*.*.*]

TcpClientクラスを使用しているとしたら、
①TcpClientクラスのConnectメソッドで接続
②TcpClientクラスのGetStreamメソッドでNetworkStreamクラスを取得
③NetworkStreamクラスのWriteメソッドでメッセージ送信
④NetworkStreamクラスのReadメソッドでメッセージ受信
という流れになると思います。

編集 削除
ゆりうす  2004-11-05 13:58:47  No: 86499  IP: [192.*.*.*]

>TcpClientクラスを使用しているとしたら、
>①TcpClientクラスのConnectメソッドで接続
>②TcpClientクラスのGetStreamメソッドでNetworkStreamクラスを取得
>③NetworkStreamクラスのWriteメソッドでメッセージ送信
>④NetworkStreamクラスのReadメソッドでメッセージ受信
>という流れになると思います。

上記の流れはわかるのですが、どの段階でログインすることになるんでしょう?
③の段階でいきなりユーザーアカウント名を送信することになるんでしょうか?
(現在は②まで出来ている、ということになりますね)

編集 削除
raki  URL  2004-11-05 14:27:48  No: 86500  IP: [192.*.*.*]

>上記の流れはわかるのですが、どの段階でログインすることになるんでしょう?
>③の段階でいきなりユーザーアカウント名を送信することになるんでしょうか?

上位プロトコルによって変わります。
なので、先にそのように聞いたのですが。
例えば、POP3の場合、②まで済んだ直後の③でユーザ名を送信し、
OKを受信した後、パスワードを送信します。
つまり、①⇒②⇒③⇒④⇒③⇒④・・・・と続きます。
送信するメッセージなどは上位プロトコルによって変わります。
プロトコルとはそもそも通信手順のことですから、
これを自分で取り決めることももちろん可能です。

②まで済んでいるということは、そこから先は上位プロトコルの
範囲となりますので、それが何か分からない以上は、
これ以上の説明はできません。

編集 削除
匿名  2004-11-05 22:52:55  No: 86501  IP: [192.*.*.*]

要はtelnetプロトコルでUNIXサーバと通信する処理を
自前で書きたいってことですよね?

実は以前、自前のサーバ管理のためにそういうものを
作ったことがあります。(VB.NETの勉強がてらね)

「ネゴシエーション」と言っているのは
telnetプロトコルでのネゴシエーションのことかと思いますが、
DUMB端末相当のクライアントであれば
DO/DONTにはWONT、WILL/WONTにはDONTを返せばなんとかなるでしょう。

あとはサーバ側のシェルによるでしょうが、
「login:」とかがくればユーザ名、
「password:」とかがくればパスを送ってやれば
ログインできるかと思います。

具体的なコードはとても掲示板に提示できるサイズではないので
がんばってくださいね(^^;
(telnetプロトコルに関してはRFC854を見てください)

編集 削除
匿名X  2004-11-22 15:38:24  No: 86502  IP: [192.*.*.*]

http://www.jscape.com/articles/telnet_using_vb.txt は参考になりますか?

編集 削除