繁体   English   中英

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

[英]why connection is refused while trying to use socket in PHP and android?

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

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

情况是

1-我正在使用XAMPP

2- Windows防火墙关闭

3-当我运行php脚本时,我可以通过检查netstat -a看到端口6789设置为侦听

4- Java“ Android”代码:

    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脚本,并且不断加载,这意味着它正在监听并且处于while块中

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

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

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

先感谢您!

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

值0是IP的协议号。 TCP的协议号为6。这两个都是根据我的Linux机器上的“ / etc / protocols” ...,根据socket_create / socket_creategetprotobynumber的文档/注释,这是确定的来源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM