将数据从 Android 手机发送到 java 服务器
Send data from Android mobile to java server
我尝试将数据从我的 Android 手机发送到 java 服务器。
我完成了服务器应用程序并通过启动 "ClientConnexion" 线程直接从它模拟了一个客户端。
很好用,数据来了,我可以读了。
然后,我将 "ClientConnexion" class 复制到我的 Android 手机中。
在我的服务器上调试时,我看到连接已正确建立,但读取功能被阻塞,就好像数据从未传入一样。
但是,Android 端的调试显示它(似乎)已发送。
这是我的 ClientConnexion 代码:
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
public class Client implements Runnable{
private Socket connexion = null;
private PrintWriter writer = null;
private BufferedInputStream reader = null;
public Client(String host, int port){
try {
connexion = new Socket(host, port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
try {
writer = new PrintWriter(connexion.getOutputStream(), true);
reader = new BufferedInputStream(connexion.getInputStream());
// COMMAND is received by server when emulating client directly from it
// COMMAND is NOT received when sent from Android mobile
writer.write("COMMAND");
writer.flush();
System.out.println("COMMAND sent");
String response = read();
System.out.println("Response : " + response);
}
catch (IOException e1) {
e1.printStackTrace();
}
writer.write("CLOSE");
writer.flush();
writer.close();
}
private String read() throws IOException{
String response = "";
int stream;
byte[] b = new byte[4096];
stream = reader.read(b);
response = new String(b, 0, stream);
return response;
}
}
Android 客户端可能会阻塞什么?没有抛出异常。
确保你的连接正常,也许你的android客户端和你的服务器在不同的网段?最后你可以调试或记录你的客户端。
我尝试将数据从我的 Android 手机发送到 java 服务器。 我完成了服务器应用程序并通过启动 "ClientConnexion" 线程直接从它模拟了一个客户端。 很好用,数据来了,我可以读了。
然后,我将 "ClientConnexion" class 复制到我的 Android 手机中。
在我的服务器上调试时,我看到连接已正确建立,但读取功能被阻塞,就好像数据从未传入一样。 但是,Android 端的调试显示它(似乎)已发送。
这是我的 ClientConnexion 代码:
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
public class Client implements Runnable{
private Socket connexion = null;
private PrintWriter writer = null;
private BufferedInputStream reader = null;
public Client(String host, int port){
try {
connexion = new Socket(host, port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
try {
writer = new PrintWriter(connexion.getOutputStream(), true);
reader = new BufferedInputStream(connexion.getInputStream());
// COMMAND is received by server when emulating client directly from it
// COMMAND is NOT received when sent from Android mobile
writer.write("COMMAND");
writer.flush();
System.out.println("COMMAND sent");
String response = read();
System.out.println("Response : " + response);
}
catch (IOException e1) {
e1.printStackTrace();
}
writer.write("CLOSE");
writer.flush();
writer.close();
}
private String read() throws IOException{
String response = "";
int stream;
byte[] b = new byte[4096];
stream = reader.read(b);
response = new String(b, 0, stream);
return response;
}
}
Android 客户端可能会阻塞什么?没有抛出异常。
确保你的连接正常,也许你的android客户端和你的服务器在不同的网段?最后你可以调试或记录你的客户端。