2017-04-21 2 views
1

PHPJavaの間にブリッジを作成しようとしましたが失敗しました。私の方法では、1つの文字列を送信するように動作しますが、データを読み取った後にサーバーは終了します。Java Serversソケットが読み終わった後に閉じます

これはJavaで私のクラスである:

public class Server { 

private static BufferedReader inputstream; 
private static BufferedWriter outputstream; 
private static ServerSocket server; 

public static void main(String[] args){ 
    System.out.println("Server gestartet"); 
    createServer(); 
} 

private static void createServer() { 
    try { 
     server = new ServerSocket(6666); 
     Socket client = server.accept(); 
     inputstream = new BufferedReader(new InputStreamReader(client.getInputStream())); 
     outputstream = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); 

     String temp = null; 

     while((temp = inputstream.readLine()) != null){ 
      System.out.println(temp); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     inputstream.close(); 
     outputstream.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

そして、これは私がPHPから文字列を送信する方法である:事前に

<?php 
$socket = fsockopen('localhost', 6666, $errno, $errstr, 30); 

if(!$socket){ 
    echo("$errno <br> $errstr"); 
    } 

fwrite($socket, "Hello its me\n"); 
fclose($socket); 
?> 

多くのおかげで、私はあなたが私を助けることができると思います:)

答えて

0

Javaコードでserver.accept()をループする必要があります。

あなたのJavaコードでは、一度クライアント接続を受け入れ、入ってくるデータを読み込み、それだけでアプリケーションが終了します。

ループ内で新しい接続を受け入れ、専用スレッドでデータを処理できます。 ストリームでリソースを試してみることも検討してください。

関連する問題