2016-11-02 4 views
1
server.js 
var net = require('net'); 
var client = net.connect(4567, 'localhost', function() { 
client.write("hello"); 

client.on('error', function(ex) { 
    console.log(ex); }); 

client.end(); 
}); 

client.java 
server = new ServerSocket(4567); 
client = server.accept(); 
InputStream input = client.getInputStream(); 
String inputString = MyClass.inputStreamAsString(input); 
system.out.println(inputString); //inputString gives me "hello" 

client.javaは5秒ごとに実行されるタイムスケジューラで、Nodeからテキストを取得して印刷します。 Nodeからソケットを閉じたくないので、すでに実行しているときにclient.javaに別のメッセージを送ることができます。私は6日(client.endを取り除く2つの問題NodeJs:ノードサーバ - > Javaクライアント接続を開く方法

  1. ()は最初のサイクル(5秒)で働いていますが、第二サイクルを実行したときにされた)(client.endを持つスケジューラに任意のメッセージ
  2. を送信していない持っています秒)私はerrer Java.net.SocketExceptionがあります:ソケットが閉じられています。

ノードでソケットを終了してスケジューラにメッセージを送信できないようにするにはどうすればよいですか?

答えて

0

netモジュールのallowHalfOpenオプションを見ましたか?

var client = net.connect({port: 4567, allowHalfOpen: true},function() { 
    //etc 
}; 
+0

私はしましたが、すべてのメッセージを一度に送信して接続を終了しません。私のフロントエンドはノードに接続されてメッセージを送ります(ユーザのクリックで「開始/停止」のようなコマンドです)ので、クリックすると常に実行しているスケジューラにコマンド(開始/停止)を送信します。それは可能ですか?今のところ、メッセージは一度送られ、私はclient.endを実行して以来、スケジューラーの2番目のサイクルでソケットが閉じられています – LisaA

関連する問題