2017-04-21 13 views
1

PHPJava 사이에서 브리지를 만들지 않습니다. 내 방법을 사용하면 하나의 문자열을 전송하지만 서버는 데이터를 읽은 다음 닫습니다.읽은 후 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

자바 코드에서 server.accept()를 루프해야합니다.

자바 코드에서 클라이언트 연결을 수락하고 들어오는 데이터를 읽으면 응용 프로그램이 종료됩니다.

루프에서 새 연결을 수락하고 전용 스레드에서 데이터를 처리 할 수 ​​있습니다. 스트림에 리소스가있는 try를 사용하는 것도 고려해보십시오.