为什么在尝试在PHP和android中使用套接字时拒绝连接?

时间:2016-02-14 02:23:59

标签: java php android sockets

为什么我得到java.net.ConnectException:/192.168.1.5:6789 - 连接被拒绝了?

我正在使用php和android java代码。在提出这个问题之前,我检查了java.net.ConnectException: Connection refused之类的问题。虽然有用但却无法解决我的问题。

情景是

1-我正在使用XAMPP

2- windows防火墙已关闭

<3>当我运行php脚本时,我可以通过检查netstat -a

看到端口6789设置为监听

4- java&#34; android&#34;代码:

    try
        {
            InetAddress serverAddr = InetAddress.getByName(serverIpAddress);//"192.168.1.5" the PC which XAMPP is runing on
            socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);//6789
        }
        catch (UnknownHostException e1)
        {
            e1.printStackTrace();
        }
        catch (IOException e1)
        {
            e1.printStackTrace();
        }

5- php代码

 <?php
set_time_limit( 0 );
$address = '127.0.0.1';
$port = 6789;
$sock = socket_create( AF_INET, SOCK_STREAM, 0 ); // 0 for  SQL_TCP
socket_bind( $sock, 0, $port ) or die( 'Could not bind to address' );  
socket_listen( $sock );
  while (true) {
    $client = socket_accept( $sock );
    $input = socket_read( $client, 1024000 );
    socket_write( $client, $response );
    socket_close( $client );
 }

socket_close( $sock );

6-我运行php脚本,它继续加载意味着它正在侦听并且在阻止

7-我启动Android应用程序并收到此通知

  

java.net.ConnectException:/192.168.1.5:6789 - 拒绝连接

最后我确信PC(服务器)的IP地址是正确的,并且在清单中设置了互联网权限

提前谢谢你!

1 个答案:

答案 0 :(得分:1)

我不认为socket_create( AF_INET, SOCK_STREAM, 0 );是正确的。第三个数字是协议号,文档说你应该使用SOL_TCP常量。

值0是IP的协议号。 TCP的协议号是6.这两个都是根据&#34; / etc / protocols&#34;在我的Linux机器上......根据socket_creategetprotobynumber的文档/评论,这是权威来源。