【问题标题】:Android Socket Client through IOExceptionAndroid Socket 客户端通过 IOException
【发布时间】:2017-09-27 11:46:54
【问题描述】:
package com.example.tristan.myapplication;
import android.os.Bundle;
        import android.support.v7.app.AppCompatActivity;
        import android.widget.Toast;
        import java.io.IOException;
        import java.net.Inet4Address;
        import java.net.InetAddress;
        import java.net.InetSocketAddress;
        import java.net.Socket;
        import java.net.SocketAddress;
        import java.net.UnknownHostException;

public class MainActivity extends AppCompatActivity {

    private Socket client;
    int serverPort = 8888;
    String serverIP = "192.168.1.6";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        fctClient();
    }

    public void fctClient() {
        try {
            Toast toast = Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_SHORT);

            InetAddress addr = InetAddress.getByName(serverIP);
            SocketAddress socketAddress = new InetSocketAddress(addr,serverPort);
            //SocketAddress socketAddress = new InetSocketAddress(serverIP, serverPort);

            client = new Socket();
            toast.show();
            client.connect(socketAddress);
            toast.show();

            toast.show();`enter code here`
            client.close();

        } catch (UnknownHostException e) {
            Toast toast = Toast.makeText(getApplicationContext(), "KO1", Toast.LENGTH_LONG);
            toast.show();
            e.printStackTrace();
        } catch (IOException e) {
            Toast toast = Toast.makeText(getApplicationContext(), "KO2", Toast.LENGTH_LONG);
            toast.show();
            e.printStackTrace();
        }
    }

} 你好, 我正在尝试使用套接字在 Python 服务器上连接 Android 上的客户端。 Python 服务器运行良好,但 Android 代码无法通过 IOException 连接服务器。 有人能告诉我我的错误吗?代码在“client.connect(socketAddress);”行失败。这让我觉得是使用了错误的命令来生成socketAddress。 我发现以下链接遇到了同样的问题,但他的解决方案对我不起作用。

(Java/Android) Client-side Socket throwing IOException

提前感谢您, 总而言之

【问题讨论】:

  • 你试过在这里阅读developer.android.com/studio/run/… 吗?如果您使用的是模拟器,您可以尝试使用 10.0.2.2 将模拟器连接到 localhost
  • 我实际上使用的是三星 S4 mini,它与我的计算机(运行 Python 服务器)连接到同一网络。
  • 可能是防火墙、路由器或其他东西阻止了你
  • 好的!所以根据你的说法,我的代码可以吗?
  • 构造函数需要这个命令,但我同意,还有其他方法!感谢您的宝贵时间

标签: android python sockets


【解决方案1】:

您有一个 NetworkOnMainThreadExeption 在 logcat 中清晰可见。所有互联网代码都应该在一个线程或 AsyncTask 中执行。

如果您修改代码,则删除所有 Toast,因为它们不能在线程或 AsyncTask 的 doInBackground 中调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多