14

私は、telnet クライアントからのソケット接続を受け入れ、シンプルなキーボード駆動のキャラクター GUI を作成するアプリケーションを持っています。

少なくとも Linux では、telnet クライアントはデフォルトで行単位モードになるため、常に^]mode char手動で行う必要があります。

関連する RFC をざっと見てIAC DONT LINEMODE (\377\376\042)みると、クライアントが接続するとすぐにアプリケーションが単純に文字を送信した場合、クライアントは強制的に文字モードにする必要があることが示唆されています。ただし、違いはありません。

仕事をする最も簡単なコードは何ですか? 理想的には、送信される単なる文字列です。私のアプリケーションは、クライアントが送り返すジャンクを吸収できます。

4

3 に答える 3

9

面白い。送って運が良かった

IAC WILL ECHO IAC WILL SUPPRESS_GO_AHEAD IAC WONT LINEMODE
255  251    1 255  251                 3 255  252       34

IAC WONT LINEMODEは冗長であるように見えます。私のtelnetクライアントはそれなしで正しい状態になっているようですが、完全を期すためにそのままにしておきました。

于 2009-07-01T12:28:11.153 に答える
7

それが価値があるために、それを自分で解決しました。

// IAC WONT LINEMODE IAC WILL ECHO

write(s,"\377\375\042\377\373\001",6);

リモート (少なくとも Linux ボックス上の Xterm からの telnet) を正しい状態にします。

于 2008-11-10T21:40:50.377 に答える
3

ケビンのソリューションはうまく機能します:

write(s,"\377\375\042\377\373\001",6);

コメントは少し間違っていますが。「WONT LINEMODE」ではなく、「DO LINEMODE」と表示する必要があります。

// IAC DO LINEMODE IAC WILL ECHO

(出典: rfc854 )

于 2016-05-22T18:15:39.297 に答える