私のマシンのポートにテキストを送りたいのですが telnet
Mac OS Xターミナルで
私が開始 telnet
を使用して:
telnet localhost 8080
それから私はいくつかのテキストを入力します。そのテキストは自動的に送信されますか、それともテキストを送信するために何かをする必要がありますか?
私のマシンのポートにテキストを送りたいのですが telnet
Mac OS Xターミナルで
私が開始 telnet
を使用して:
telnet localhost 8080
それから私はいくつかのテキストを入力します。そのテキストは自動的に送信されますか、それともテキストを送信するために何かをする必要がありますか?
回答:
これが単純なPythonサーバーです。
#!/usr/bin/env python
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 10 # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connection address:', addr
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data) # echo
conn.close()
server.pyとして保存して実行します python server.py
。
それから端末を使って接続してみてください
telnet 127.0.0.1 5005
それから何かをタイプして押してください 戻る
サーバーはそのデータをコンソールに表示してあなたに送り返します。
そうすれば、telnetでデータを送信するために何をしなければならないのかがわかります。
答えは、リモートエンドが何をサポートしているかによって異なります。
リモートエンドが受信した入力に対して行うことは、リモートエンドによって異なります。ほとんどのサーバープロセス(HTTP、SMTP、POP、IMAP)は、入力を処理する前に行末(EOL、改行)文字を待つ傾向があります。他の人は入力の処理を開始する前にファイルの終わり(EOF、^ D)を待つかもしれません。
にテキストを入力したとき telnet
、デフォルトでそれはで動作します ラインモード 1行にパケットを送信するので、次のように押すだけです。 入る コマンドをリモートホストに送信します(クライアント側での端末文字処理のため)。これはネットワークトラフィックを減らすためであり、コマンドラインを入力している間の長い遅延ネットワークに非常に役立ちます。入力した文字ごとにパケットを送信する必要がある場合は、バイナリモードに切り替える必要があります。
Telnetをテストするには ラインモード たとえば、ダミーポートを実行してローカルポートをリッスンすることができます。を使って netcat
(必要に応じてインストール):
nc -vl localhost 1234
次に、別の端末で次のようにしてサーバーに接続します。
telnet localhost 1234
データを受信したときに確認するテキストを入力します。
ヒット コントロール - ] ( ^]
)とタイプ quit
終わる。
次のコマンドでBashシェルを使ってデータを送信することもできます。
cat > /dev/tcp/127.0.0.1/1234
それからテキストの入力を始めます。終了したら、ヒット コントロール - D 。
使ってみる send
宛先ホストへの接続を開いた後にコマンドを実行します。
send "some text"
詳細について send
見る man telnet
send
commandは、ランダムテキストではなく、特殊文字シーケンスをリモートマシンに送信するためのものです。 manページを見てください。 developer.apple.com/library/mac/documentation/Darwin/Reference/…