我在Android手机上的客户端应用程序没有连接到PC上的java服务器 . 我的java服务器正常工作但是当我用java服务器连接android客户端时,客户端套接字抛出IOException . 我执行了调试,发现当wifi关闭时,它会立即抛出异常,但是当wifi可用时,它会等待一段时间然后抛出IOException .

我已经以不同的方式构建了10个以上的客户端程序,但是当我在android中尝试它时,每个程序是客户端还是服务器崩溃 .

在客户端有什么问题,我们真的可以通过套接字将android连接到PC,还有其他方法在android手机和PC之间 Build tcp / ip连接吗?

Client Code:

package com.example.androidclient;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Client extends Activity {

// socket programming connection oriented stuff declaration
private Socket clientSocket;
private DataOutputStream outToServer;

private Button connect;
private EditText sendMessage;
private TextView sentMessage;

private String message;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_client);

    connect = (Button) findViewById(R.id.bConnect);
    sendMessage = (EditText) findViewById(R.id.etMessage);
    sentMessage = (TextView) findViewById(R.id.tvMessage);

    connect.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            message = sendMessage.getText().toString();
            new Thread( new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    message = "Rashid";
                    try {
                        clientSocket = new Socket(InetAddress.getByName("192.168.56.1"), 5555);
//Above line of code is the cause of exception.
                        outToServer = new DataOutputStream(clientSocket.getOutputStream());
                        outToServer.writeBytes(message);

                        outToServer.close();
                        clientSocket.close();
                    } catch (UnknownHostException e) {
                        // TODO Auto-generated catch block
                        message = "ErrorHE";
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        message = "ErrorIO";
                        e.printStackTrace();
                    }
                }
            }).start();
            sentMessage.setText(message);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.client, menu);
    return true;
}

}

STACK TRACE:

06-17 10:49:05.407:W / System.err(15780):java.net.SocketTimeoutException:90000ms后无法连接到/192.168.56.1(端口5555)

06-17 10:49:05.412:W / System.err(15780):at libcore.io.IoBridge.connectErrno(IoBridge.java:176)

06-17 10:49:05.414:W / System.err(15780):at libcore.io.IoBridge.connect(IoBridge.java:112)

06-17 10:49:05.417:W / System.err(15780):at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)

06-17 10:49:05.421:W / System.err(15780):at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

06-17 10:49:05.424:W / System.err(15780):at java.net.Socket.startupSocket(Socket.java:575)

06-17 10:49:05.427:W / System.err(15780):at java.net.Socket . (Socket.java:228)

06-17 10:49:05.430:W / System.err(15780):at com.example.androidclient.Client $ 1 $ 1.run(Client.java:55)

06-17 10:49:05.433:W / System.err(15780):at java.lang.Thread.run(Thread.java:838)

附图:我'm new user so i can'吨上传图像's why I' m附加堆栈跟踪图像的链接 . StackTrace