【问题标题】:TCP socket connection refused on AndroidAndroid上的TCP套接字连接被拒绝
【发布时间】:2019-04-16 08:59:59
【问题描述】:

在一个简单的客户端-服务器 TCP 套接字中,当我尝试在 Android Studio 中创建客户端套接字时遇到问题。导致错误的指令是Socket s=new Socket(hostname,port);

我使用的端口是 1993,我尝试了一些 hostname 变量的值:

  1. hostname="127.0.0.1"
  2. hostname="localhost"
  3. hostname=""
  4. hostname=InetAddress.getByName([with-the previous 2 values])

在任何情况下,应用程序都会因为这个错误而停止,下面的错误属于第一个点,其他的都会出现类似的错误。

W/System.err:无法获得连接到 127.0.0.1 的 I/O W/System.err:java.net.ConnectException:无法连接到 /127.0.0.1(端口 1993):连接失败:ECONNREFUSED(连接被拒绝) 在 libcore.io.IoBridge.connect(IoBridge.java:124) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163) 在 java.net.Socket.startupSocket(Socket.java:592) 在 java.net.Socket.tryAllAddresses(Socket.java:128) 在 java.net.Socket.(Socket.java:178) 在 java.net.Socket.(Socket.java:150) W/System.err:在 com.example.davide.beachapp.model.ClientSocket$MyThread.run(ClientSocket.java:92) 引起:android.system.ErrnoException:连接失败:ECONNREFUSED(连接被拒绝) 在 libcore.io.Posix.connect(本机方法) 在 libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 在 libcore.io.IoBridge.connectErrno(IoBridge.java:137) 在 libcore.io.IoBridge.connect(IoBridge.java:122) ... 7 更多

Eclipse 中的相同指令有效,我在命令行上使用服务器“nc -l 1993”对其进行了测试,一切都在 Eclipse 上有效。

可能是清单的一些配置问题?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.davide.beachapp">
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>                
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
      android:name=".MainActivity"
      android:label="@string/app_name"
      android:theme="@style/AppTheme.NoActionBar">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" >
      </intent-filter>
    </activity>
  </application>
</manifest>

【问题讨论】:

    标签: java android sockets tcpclient


    【解决方案1】:

    如果您使用的是模拟器,请尝试使用10.0.2.2 而不是127.0.0.1。

    欲了解更多信息,请访问此页面:

    Set up Android Emulator networking

    【讨论】:

    • 谢谢它的工作,没有必要在运行时更改 te ip
    • 很高兴听到!快乐编码:)
    【解决方案2】:

    在模拟器中,您必须使用局域网上计算机的 IP。例如,在我的网络Gateway: 192.168.0.1 和我的计算机的IP 是192.168.0.2。所以,我必须在 Android 模拟器中制作:

    Socket socket = new Socket("192.168.0.2",1993);

    【讨论】:

    • 物理设备呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2016-06-03
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多