PC机作为Client,Android作为Server,PC与Android通过USB线连接。PC机Client端实现:
package client;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;public class Client {
/**
* @param args
*/
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("adb forward tcp:6100 tcp:5556");
Thread.sleep(2000);
} catch (IOException e3) {
e3.printStackTrace();
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
Socket socket = null;
try {
InetAddress serverAddr = null;
serverAddr = InetAddress.getByName("10.0.2.15");
System.out.println("TCP 1111" + "C: Connecting..."); socket = new Socket(serverAddr, 5556);
String message = "AndroidRes,Where is my Pig (Android)?";
System.out.println("TCP 2222" + "C: Sending: '" + message + "'");
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println(message);
} catch (UnknownHostException e1) {
System.out.println("TCP 3333" + "ERROR:" + e1.toString());
} catch (IOException e2) {
System.out.println("TCP 4444" + "ERROR:" + e2.toString());
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
System.out.println("TCP 5555" + "ERROR:" + e.toString());
}
}
}
}Android开放板Server端,在工程的AndroidManifest.xml文件中添加了,<uses-permission android:name="android.permission.INTERNET" />用户权限,具体实现如下:
package r.Server;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;import android.app.Activity;
import android.os.Bundle;public class Serever extends Activity {
/** Called when the activity is first created. */
final int SERVER_PORT = 5556;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startServer();
}
private void startServer() {
try {
System.out.println("s: connecting...");
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
while (true) {
Socket client = serverSocket.accept();
System.out.println("s: receiving...");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str = in.readLine();
System.out.println("s: received:'" + str);
} catch (Exception e) {
System.out.println("s: error");
e.printStackTrace();
} finally {
client.close();
System.out.println("s:done");
}
Thread.sleep(3000);
}
} catch (Exception e) {
System.out.println("s:error");
e.printStackTrace();
}
}
}通信报错提示:TCP 4444ERROR:java.net.ConnectException: Connection timed out: connect
Client与Server未建立连接
package client;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;public class Client {
/**
* @param args
*/
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("adb forward tcp:6100 tcp:5556");
Thread.sleep(2000);
} catch (IOException e3) {
e3.printStackTrace();
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
Socket socket = null;
try {
InetAddress serverAddr = null;
serverAddr = InetAddress.getByName("10.0.2.15");
System.out.println("TCP 1111" + "C: Connecting..."); socket = new Socket(serverAddr, 5556);
String message = "AndroidRes,Where is my Pig (Android)?";
System.out.println("TCP 2222" + "C: Sending: '" + message + "'");
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println(message);
} catch (UnknownHostException e1) {
System.out.println("TCP 3333" + "ERROR:" + e1.toString());
} catch (IOException e2) {
System.out.println("TCP 4444" + "ERROR:" + e2.toString());
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
System.out.println("TCP 5555" + "ERROR:" + e.toString());
}
}
}
}Android开放板Server端,在工程的AndroidManifest.xml文件中添加了,<uses-permission android:name="android.permission.INTERNET" />用户权限,具体实现如下:
package r.Server;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;import android.app.Activity;
import android.os.Bundle;public class Serever extends Activity {
/** Called when the activity is first created. */
final int SERVER_PORT = 5556;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startServer();
}
private void startServer() {
try {
System.out.println("s: connecting...");
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
while (true) {
Socket client = serverSocket.accept();
System.out.println("s: receiving...");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str = in.readLine();
System.out.println("s: received:'" + str);
} catch (Exception e) {
System.out.println("s: error");
e.printStackTrace();
} finally {
client.close();
System.out.println("s:done");
}
Thread.sleep(3000);
}
} catch (Exception e) {
System.out.println("s:error");
e.printStackTrace();
}
}
}通信报错提示:TCP 4444ERROR:java.net.ConnectException: Connection timed out: connect
Client与Server未建立连接
你的这句应该改成out.writeObject(message);吧我觉得
这句有问题,socket监听的本地即时你pc机中的端口,5556端口是android机中的端口。