2017-02-25 11 views
0

Nashornは、エンジンがprint()関数を介して使用するライターに書き込むことができます。内蔵の関数を使って読者から読める方法はありますか?
例:その場合セットリーダーから読み込む組み込み関数はありますか?

Socket input=new Socket("stackoverflow.com", 1234); 
Socket output=new Socket("stackoverflow.com", 4321); 
engine.getContext().setWriter(new InputStreamReader(input.getInputStream())); //Changing to Socket input's reader from default one, which should be System.in. 
engine.getContext().setWriter(new OutputStreamWriter(s.getOutputStream())); //Changing from System.out to Socket output's output stream. 

Iが印刷( "こんにちは")を使用する場合、ソケットの出力は、メッセージを受信します。しかし、どのようにソケット入力が送るものを読むことができますか?

+0

タグから推測できますが、「エンジン」は何かを指定する必要があります。 – chrylis

+0

@chrylis Done。言及いただきありがとうございます。 – Burak

+0

スキャナのスキャン=新しいスキャナ(新しいファイル( "... myfiles/input.in");これは入力ファイルから読み込みます)次に入力ストリームを1行ずつ処理できます – Juniar

答えて

0

ScriptContextでsetReaderとsetWriterを使用するときは、Javascriptコンテキストのデフォルトの入力ストリームと出力ストリームを設定しています。そこで、あなたがここでやっているのは、Javascriptをソケットストリームから読み書きするように設定することです。

これらのストリームをJavascriptコードで利用できるようにする方法は、使用しているJS環境/ライブラリによって異なります。しかし、Node.jsでは、それらをprocess.stdinprocess.stdoutと見ることができます。

FWIWでは、stdin/stdoutへのアクセスは標準ECMAScriptライブラリではサポートされていません。

+0

私はJavaアプリケーション内でNashornスクリプトエンジンを使用していますが、Javaオブジェクトを使用して入力を得ることはできますが、それを使用する方法がない場合は、読者を設定する目的は何ですか?私はここにいませんか? – Burak

+0

そうです、しかし、あなたは 'setReader'と' setWriter'呼び出しをする必要はありません。また、 'setReader 'で設定されたリーダーを使う方法がないとは言いませんでした。 Javaの「スクリプトエンジン」APIは、現在のECMAScript仕様に必要な機能よりも前の機能を提供しているという点がポイントです。 –

関連する問題