telnet接続するには?


チビみみ  2002-12-06 20:37:32  No: 105624

自動でtelnet接続して、相手先に文字を送って
相手から返ってきた文字を読みとりたいのですが、
そのようなことは可能なのでしょうか?


YuO  2002-12-07 04:12:45  No: 105625

可能か,といわれれば可能です。
実際にどのようにするのか,といわれたら,
ソケットオプションの話が絡むので結構面倒なことになると思います。
また,相手の居る話ですからRFCを熟読する必要があります。

telnetに拘らなければ,WinSockコントロールを使って
TCPで普通に送受信すればできると思います。


チビみみ  2002-12-09 21:21:29  No: 105626

結構面倒なことになるのですか…。

PCにIPアドレスをもった端末をLANケーブルで接続して、
telnet接続し、PCよりコマンドを送信してやり、
その結果を端末から受信する。

テラタームなどでのマニュアル操作では簡単に出来るので
VBでも簡単に出来てしまうと思っていたのですが。

『ソケットオプション』も初耳なのです。


YuO  2002-12-09 22:26:55  No: 105627

アプリケーションを利用すれば簡単なのは当たり前です。
簡単になるようにしているのですから。

それをプログラムでやるとなれば,
アプリケーションが行っていたことを自前で書かないといけません。

telnetの場合,キー入力を即座に送るため,TCP_NODELAYソケットオプションをONにして送信します。
それをsimulateせずに送信した場合に,すべてのtelnetサーバーが受け付けてくれるとは限りません。
#まぁ,普通は受け付けるでしょうけど。

基本的にはRFCを読んで,WinSockコントロールでできるかを考えて,
できるならWinSockコントロールで,できないならAPIを使うことになります。

応答ファイルを作って,Windows 2000以降付属のコマンドラインtelnetをリダイレクト使って叩く,
という方法もありますけどね……。
#WinSockなんて知ったことか,ということができます。


チビみみ  2002-12-11 04:04:44  No: 105628

やっぱり分からないので教えてください。
『TCP_NODELAYソケットオプションをON』にするとあるのですが
どの部分のことですか?

テラタームで行うと下記”LANアナライザOKデータ”となりOKなのですが
Winsockでローカルポート、リモートポートを『23』
としてソフトを実行すると、
①〜④までは同じ表示なのですが、それ以降の表示が下記
”LANアナライザNGデータ”となるのです。
設定されていないような感じなのです。

”LANアナライザOKデータ(抜粋)”
①t1090  -> telnet Flags=....S. Seq=0003199165 <mss 1460,nop,nop,>  
②telnet -> t1090  Flags=.A..S. Seq=1221640705 Ack=0003199166 <mss     1460>  
③t1090  -> telnet Flags=.A.... Ack=1221640706  
④telnet -> t1090  Flags=.AP... Seq=1221640706 Ack=0003199166 TELNET    IAC WILL SUPPRESS GO AHEAD  
⑤t1090  -> telnet Flags=.AP... Seq=0003199166 Ack=1221640721 TELNET    IAC WILL TERMINAL TYPE  
⑥telnet -> t1090  Flags=.AP... Seq=1221640721 Ack=0003199181 TELNET    IAC SB TERMINAL TYPE <03> 
⑦t1090  -> telnet Flags=.AP... Seq=0003199181 Ack=1221640731 TELNET    IAC WONT ECHO <18><FF><F0> 
⑧telnet -> t1090  Flags=.AP... Seq=1221640731 Ack=0003199193 TELNET    IAC DONT ECHO  
⑨t1090  -> telnet Flags=.AP... Seq=0003199193 Ack=1221640734 TELNET    IAC SB TERMINAL TYPE 100<FF><F0> 
⑩telnet -> t1090  Flags=.A.... Ack=0003199204  
⑪t1090  -> telnet Flags=.AP... Seq=0003199204 Ack=1221640734 TELNET    <0D><00> 
⑫telnet -> t1090  Flags=.AP... Seq=1221640734 Ack=0003199206 TELNET    <0D><0A> 
⑬t1090  -> telnet Flags=.A.... Ack=1221640736  

”LANアナライザNGデータ(抜粋)”
①t1096  -> telnet Flags=....S. Seq=0005842163 <mss 1460,nop,nop,>  
②telnet -> t1096  Flags=.A..S. Seq=1503176705 Ack=0005842164 <mss     1460>  
③t1096  -> telnet Flags=.A.... Ack=1503176706  
④telnet -> t1096  Flags=.AP... Seq=1503176706 Ack=0005842164 TELNET    IAC WILL SUPPRESS GO AHEAD  
⑤t1096  -> telnet Flags=.A.... Ack=1503176721  
⑥t1096  -> telnet Flags=.A...F Seq=0005842164 Ack=1503176721  
⑦telnet -> t1096  Flags=.A.... Ack=0005842165  
⑧telnet -> t1096  Flags=.A...F Seq=1503176721 Ack=0005842165  
⑨t1096  -> telnet Flags=.A.... Ack=1503176722

何か設定がたりないのでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加