2014-09-21 96 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);