Android手机上的客户端应用程序无法与PC上的java服务器连接。 我的java服务器正常工作但是当我用java服务器连接android客户端时,客户端套接字抛出IOException。 我执行了调试,发现当wifi关闭时,它会立即抛出异常,但是当wifi可用时,它会等待一段时间然后抛出IOException。
我已经以不同的方式构建了10多个客户端程序,但是当我在android中尝试它时,每个程序是客户端还是服务器崩溃。
客户端有什么问题,我们真的可以通过套接字将android连接到pc,还有其他方法可以在android手机和PC之间建立tcp / ip连接吗?
客户代码:
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)
附图: 我是新用户,所以我无法上传图像,这就是我附加堆栈跟踪图像链接的原因。StackTrace