2014-09-21 48 views
0

我想通過套接字從php到java的通信。我有以下的Java代碼:PHP到Java - 套接字

private static ServerSocket socket; 

private static Socket connection; 
private static String command  = new String(); 
private static String responseStr = new String(); 

private static int port = 2500; 

public static void main(String args[]) { 
    System.out.println("Server is running."); 

    try { 
     socket = new ServerSocket(port); 

     while (true) { 
      connection = socket.accept(); 

      InputStreamReader inputStream = new InputStreamReader(connection.getInputStream()); 
      DataOutputStream response = new DataOutputStream(connection.getOutputStream()); 
      BufferedReader input = new BufferedReader(inputStream); 

      command = input.readLine(); 
      response.writeBytes(responseStr); 
      response.flush(); 
     } 
    } catch (IOException e) { 
     System.out.println("Fail!: " + e.toString()); 
    } 
} 

我有下面的PHP代碼:

<?php 
$socket = stream_socket_server("tcp://192.168.0.10:2500", $errno, $errstr); 
if (!$socket) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    while ($conn = stream_socket_accept($socket)) { 
     fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n"); 
     fclose($conn); 
    } 
    fclose($socket); 
} 

我啓動Java應用程序,它啓動正常,當我運行PHP的,我得到以下錯誤:

An attempt was made to access a socket in a way forbidden by its access permissions. (0) 

我已經搜索谷歌,並嘗試了所有我能找到的解決方案,雖然沒有任何工作。我重新啓動了這兩臺計算機並禁用了防火牆,但都沒有工作。

我不確定該從哪裏出發。


[更新自評:]

192.168.0.10與Java應用程序和Web服務器上的機器。我正在從另一臺機器連接192.168.0.7

+0

192.168.0.10是機器的IP地址? – alk 2014-09-21 17:26:03

+0

192.168.0.10是帶有java應用程序和Web服務器的機器。我從另一臺機器連接192.168.0.7 – 2014-09-21 17:42:36

+0

這不會解決您當前的問題,但是您是否考慮過使用AMQP消息傳遞協議來完成此任務? – SpencerD 2014-09-21 19:15:11

回答

1

只能在代碼運行時在機器上創建套接字。

因此,如果PHP代碼在運行192.168.0.7,然後執行:

$socket = stream_socket_server("tcp://192.168.0.7:2500", $errno, $errstr);