トップページ⇒tech
12コメント4KB

探しています

■ このスレッドは過去ログ倉庫に格納されています
0001ib NGNG
こんにちは。

telnetクライアントをC言語で作成しているサンプル、または解説
などがあるようなページをご存じでしたら、教えていただけないでしょうか。
よろしくお願います。
0002名無しさん@お腹いっぱい。 NGNG
あるけど気楽にアップできるいいサーバーないですか?
0003名無しさん@お腹いっぱい。 NGNG
TeraTermとか?
(C++かな?)
0004ib NGNG
すみません、情報不足でした。
Linuxで開発しています。
一応、ソケット使ってftpとかsmtoには接続できたのですが、
telnetだけはネゴシエーションの関係でうまく接続できない状態です。
なにやら不明な文字が表示されて止まります。

調べた結果、バイナリデータを読み込んでいったときに254(DO)が来て
それに対して253(DON'T)を送れば回避できるということらしい、という
あたりまでわかったのですが、実際にそれを実装するにはどうすりゃいいのか
という段階です。
0005名無しさん@お腹いっぱい。 NGNG
<PRE>
switch (opt) {
case DO: rep = WONT; break;
case DONT: rep = WONT; break;
}
if ((opt == DO) && (cmd == C_ECHO)) {
// ECHO しろと来た
rep = WILL; // ECHOしますよと送信する
echo = true;
} else if ((opt == DONT) && (cmd == C_ECHO)) {
// ECHO するなと来た
rep = WONT; // ECHOしませんよと送信する
echo = false;
} else if ((opt == WONT) && (cmd == C_ECHO)) {
// ECHO しないぞと来た
echo = true;
return; // 逆らわない
} else if ((opt == WILL) && (cmd == C_ECHO)) {
// ECHO するぞと来た
echo = false;
return; // 逆らわない
} else if ((opt == WILL) && (cmd == C_TOGLLE_FLLOW_CONTROL)) {
// フロー制御するぞと来た
ixon = true;
return;
} else if ((opt == WONT) && (cmd == C_TOGLLE_FLLOW_CONTROL)) {
// フロー制御しないぞと来た
ixon = false;
return;
} else if (opt == WILL) {
return; // 何かするぞと来た(サポートしないが逆らわない)
} else if (opt == WONT) {
return; // 何かしないぞと来た(サポートしないが逆らわない)
}
buff[0] = IAC;
buff[1] = rep;
buff[2] = cmd;
int t@` n;
for (n = 0; n < sizeof buff; n += t) {
if ((t = tcpsnd(soc@` &(buff[n])@` sizeof buff - n)) < 0) {
throw telnet_exception("send IAC");
}
}
</PRE>
0006名無しさん@お腹いっぱい。 NGNG
>5
そんな頭悪いソース貼るな。
0007名無しさん@お腹いっぱい。 NGNG
>そんな頭悪いソース貼るな。
うるせーんだよテメーわ。仕切るんじゃねーよ!

0008ib NGNG
こんにちは。

ソース掲載、ありがとうございます。
ただ、出来れば各変数の型とか説明していただけるとありがたいのですが。
すみません。

それから、tcpsndっていう関数ですが、manで調べたのですが
エントリーにありませんでした。引数など解説していただけると助かります。
ちなみに、こちらはRedHat6.2です。
0009名無しさん@お腹いっぱい。 NGNG
>それから、tcpsndっていう関数ですが、manで調べたのですが
WON'Tに答えない、DON'Tには答えるといった形だけ見て。

#イントラネットの内側でグローバルアドレスを勝手に切ってる
#マシンへWEBサーバーから特殊な方法で送信をする処理です。
#...などと書いてみる。
0010名無しさん@お腹いっぱい。 NGNG
>>5
腐ってんじゃン。
所詮は厨房といったところか。
0011ib NGNG
一応、なんとか問題が解決できました。
ご返答下さった皆様、ありがとうございました。
0012名無しさん@お腹いっぱい。 NGNG
GNU inetutils-1.3.2のソースを見る。
もしくは*BSDの/usr/src/usr.bin/telnetでもいいけど。
■ このスレッドは過去ログ倉庫に格納されています