android - 创建客户端套接字失败

标签 android sockets client

我正在尝试在 android 中连接两个模拟器,一个被认为是服务器,一个被认为是客户端。 我使用 TextView 和处理程序来发布客户端和服务器的状态。 我的客户端的问题是我可以创建套接字,通常我会在 TextView 上收到一条错误消息。不仅如此,当我尝试按下客户端应用程序上的按钮时,我会强制关闭但我不会不知道为什么因为我有不同的客户端连接线程:)

有人可以告诉我我做错了什么吗?

这是我的代码:

公共(public)类 screen1 扩展 Activity {

private TextView clientState;
private String serverIpAddress="10.0.2.2";
public static final int ClientPort = 8080;
private boolean connected = false;
private Handler handler=new Handler();
Socket socket;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screen1);
    clientState = (TextView) findViewById(R.id.client_Status);

    Button b = (Button)findViewById(R.id.mainMenu);
    b.setOnClickListener(new View.OnClickListener() {
       public void onClick(View arg0) {
       Intent i = new Intent(screen1.this, screen2.class);
       startActivity(i);
       } 
    });

   Thread cThread=new Thread(new ClientThread()); 
  cThread.start();  
  }
public class ClientThread implements Runnable{
    public void run()
    {
        try
        {
            InetAddress serverAddr=InetAddress.getByName(serverIpAddress);
            handler.post(new Runnable(){
                public void run(){
                    clientState.setText(" try to connect!");
                }
            });
            socket=new Socket(serverAddr,ClientPort);

            handler.post(new Runnable(){
                public void run(){
                    clientState.setText("Connected!");
                }
            });

        }
        catch(Exception e){
            handler.post(new Runnable(){
                public void run(){
                    clientState.setText("Error");
                    }
            });

            e.printStackTrace();
        }

    }
}
protected void onStop() {
    super.onStop();
    try {
         // make sure you close the socket upon exiting
         socket.close();
     } catch (IOException e) {
         e.printStackTrace();
     }
}

最佳答案

我不擅长 Android 编程,但我看到你的代码进入了一个无限循环:

while(true){
        handler.post(new Runnable(){
            public void run(){
                clientState.setText("Connected!");
            }
        });
        }

关于android - 创建客户端套接字失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607018/

相关文章:

python - 编写 Python 服务器的选项,该服务器将持续检查数据库的更新和更改

swift - 过滤数据 从vapor客户端获取

java - 通过 Python 或 Perl 客户端执行 java 方法

android - 从 PreferenceScreen 到 DialogPreference

c - 来自发布的 MQTT 接收和 mqtt ping C

Python 套接字库认为套接字在未打开时已打开

c# - C# 套接字编程新手

android - Urban Airship + MeteorJS 集成

android - 激励视频广告未加载

android - 纸杯蛋糕到 FroYo 市场问题(应用程序未向某些人显示 - 或在 appbrain 上列出)