お世話になっております。VB.NET初心者ですが、質問です。
現在私はVisualStudioを利用し、VB.NETでUNIXクライアントを作成しております。
こちらの掲示板でも以前に何度か話題になっていたようですが、
過去ログから自力で作成するには、Winsock接続とネゴシエーションを行えば、
ようやくアカウント・パスワード送信→ログインの段階に進めることがわかりました。
しかし、接続までは進めましたが、ネゴシエーションを行う方法がわかりません。
C++やVBの例はWEB上で発見できましたが、VB.NETの例は発見できませんでした。
どのようにコーディングすればよろしいのでしょうか?
お手数ですが、ご教授お願い致します。
(注:タイトルにもありますが、BASP21は使用しないとします)
>VB.NETでUNIXクライアントを作成しております。
どのようなクライアントソフトを作成されているのでしょうか?
>接続までは進めましたが、ネゴシエーションを行う方法がわかりません。
プロトコルはなんですか?BASP21の代用ということから推測するに、
SMTP, POP3, FTP, HTTPのいずれかと思いますが、
SMTPの場合はSMTP認証がありますが、使わない場合が多いので、
残りの3つとなるでしょうか。
そもそも、何を行いたいのかがわかりません。
認証の方法もプロトコルによって違います。
また、VB.NETの場合、Winsockを使わなくても、
System.Net.Sockets名前空間にあるクラスで代用できます。
代表的なのはTcpClientクラスとUdpClientクラスでしょうか。
すみません、説明不足でした。
>どのようなクライアントソフトを作成されているのでしょうか?
telnet接続でログイン後、UNIXサーバにコマンドを送信し、
その結果をUNIXクライアントで受信・・・させるための、
UNIXクライアントを作成しています。
>プロトコルはなんですか?BASP21の代用ということから推測するに、
>SMTP, POP3, FTP, HTTPのいずれかと思いますが、
プロトコルはこれらのいずれでもなく、TCPです。
TCPClientクラスを使用してます。
TcpClientクラスを使用しているとしたら、
①TcpClientクラスのConnectメソッドで接続
②TcpClientクラスのGetStreamメソッドでNetworkStreamクラスを取得
③NetworkStreamクラスのWriteメソッドでメッセージ送信
④NetworkStreamクラスのReadメソッドでメッセージ受信
という流れになると思います。
>TcpClientクラスを使用しているとしたら、
>①TcpClientクラスのConnectメソッドで接続
>②TcpClientクラスのGetStreamメソッドでNetworkStreamクラスを取得
>③NetworkStreamクラスのWriteメソッドでメッセージ送信
>④NetworkStreamクラスのReadメソッドでメッセージ受信
>という流れになると思います。
上記の流れはわかるのですが、どの段階でログインすることになるんでしょう?
③の段階でいきなりユーザーアカウント名を送信することになるんでしょうか?
(現在は②まで出来ている、ということになりますね)
>上記の流れはわかるのですが、どの段階でログインすることになるんでしょう?
>③の段階でいきなりユーザーアカウント名を送信することになるんでしょうか?
上位プロトコルによって変わります。
なので、先にそのように聞いたのですが。
例えば、POP3の場合、②まで済んだ直後の③でユーザ名を送信し、
OKを受信した後、パスワードを送信します。
つまり、①⇒②⇒③⇒④⇒③⇒④・・・・と続きます。
送信するメッセージなどは上位プロトコルによって変わります。
プロトコルとはそもそも通信手順のことですから、
これを自分で取り決めることももちろん可能です。
②まで済んでいるということは、そこから先は上位プロトコルの
範囲となりますので、それが何か分からない以上は、
これ以上の説明はできません。
要はtelnetプロトコルでUNIXサーバと通信する処理を
自前で書きたいってことですよね?
実は以前、自前のサーバ管理のためにそういうものを
作ったことがあります。(VB.NETの勉強がてらね)
「ネゴシエーション」と言っているのは
telnetプロトコルでのネゴシエーションのことかと思いますが、
DUMB端末相当のクライアントであれば
DO/DONTにはWONT、WILL/WONTにはDONTを返せばなんとかなるでしょう。
あとはサーバ側のシェルによるでしょうが、
「login:」とかがくればユーザ名、
「password:」とかがくればパスを送ってやれば
ログインできるかと思います。
具体的なコードはとても掲示板に提示できるサイズではないので
がんばってくださいね(^^;
(telnetプロトコルに関してはRFC854を見てください)
http://www.jscape.com/articles/telnet_using_vb.txt は参考になりますか?
ツイート | ![]() |