package cn.yo2.aquarium.test.testpcclient;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestPCClient {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
try {
System.out.println("adb shell am broadcast -a NotifyServiceStop");
Runtime.getRuntime().exec("adb shell am broadcast -a NotifyServiceStop");
Thread.sleep(3000);
System.out.println("adb shell am broadcast -a NotifyServiceStart");
Runtime.getRuntime().exec("adb shell am broadcast -a NotifyServiceStart");
Thread.sleep(3000);
System.out.println("adb forward tcp:12580 tcp:10086");
Runtime.getRuntime().exec("adb forward tcp:12580 tcp:10086");
Thread.sleep(3000);
} catch (IOException e3) {
e3.printStackTrace();
}
Socket socket = null;
try {
InetAddress serverAddr = null;
serverAddr = InetAddress.getByName("127.0.0.1");
System.out.println("TCP 1111" + "C: Connecting...");
socket = new Socket(serverAddr, 12580);
System.out.println("TCP 221122" + "C:RECEIVE");
BufferedOutputStream out = new BufferedOutputStream(socket
.getOutputStream());
BufferedInputStream in = new BufferedInputStream(socket
.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
boolean flag = true;
while (flag) {
System.out.print("请输入1~6的数字,退出输入exit:");
String strWord = br.readLine();// 从控制台输入1~6
if (strWord.equals("1")) {
out.write("1".getBytes());
out.flush();
System.out.println("1 finish sending the data");
String strFormsocket = readFromSocket(in);
System.out.println("the data sent by server is:/r/n"
+ strFormsocket);
System.out
.println("=============================================");
} else if (strWord.equals("2")) {
out.write("2".getBytes());
out.flush();
System.out.println("2 finish sending the data");
String strFormsocket = readFromSocket(in);
System.out.println("the data sent by server is:/r/n"
+ strFormsocket);
System.out
.println("=============================================");
} else if (strWord.equals("3")) {
out.write("3".getBytes());
out.flush();
System.out.println("3 finish sending the data");
String strFormsocket = readFromSocket(in);
System.out.println("the data sent by server is:/r/n"
+ strFormsocket);
System.out
.println("=============================================");
} else if (strWord.equals("4")) {
/* 发送命令 */
out.write("4".getBytes());
out.flush();
System.out.println("send file finish sending the CMD:");
/* 服务器反馈:准备接收 */
String strFormsocket = readFromSocket(in);
System.out
.println("service ready receice data:UPDATE_CONTACTS:"
+ strFormsocket);
byte[] filebytes = FileHelper.readFile("R0013340.JPG");
System.out.println("file size=" + filebytes.length);
/* 将整数转成4字节byte数组 */
byte[] filelength = new byte[4];
filelength = Tools.intToByte(filebytes.length);
/* 将.apk字符串转成4字节byte数组 */
byte[] fileformat = null;
fileformat = ".apk".getBytes();
System.out
.println("fileformat length=" + fileformat.length);
/* 字节流中前4字节为文件长度,4字节文件格式,以后是文件流 */
/* 注意如果write里的byte[]超过socket的缓存,系统自动分包写过去,所以对方要循环写完 */
out.write(filelength);
out.flush();
String strok1 = readFromSocket(in);
System.out.println("service receive filelength :" + strok1);
// out.write(fileformat);
// out.flush();
// String strok2 = readFromSocket(in);
// System.out.println("service receive fileformat :" +
// strok2);
System.out.println("write data to android");
out.write(filebytes);
out.flush();
System.out.println("*********");
/* 服务器反馈:接收成功 */
String strread = readFromSocket(in);
System.out.println(" send data success:" + strread);
System.out
.println("=============================================");
} else if (strWord.equalsIgnoreCase("EXIT")) {
out.write("EXIT".getBytes());
out.flush();
System.out.println("EXIT finish sending the data");
String strFormsocket = readFromSocket(in);
System.out.println("the data sent by server is:/r/n"
+ strFormsocket);
flag = false;
System.out
.println("=============================================");
}
}
} catch (UnknownHostException e1) {
System.out.println("TCP 331133" + "ERROR:" + e1.toString());
} catch (Exception e2) {
System.out.println("TCP 441144" + "ERROR:" + e2.toString());
} finally {
try {
if (socket != null) {
socket.close();
System.out.println("socket.close()");
}
} catch (IOException e) {
System.out.println("TCP 5555" + "ERROR:" + e.toString());
}
}
}
/* 从InputStream流中读数据 */
public static String readFromSocket(InputStream in) {
int MAX_BUFFER_BYTES = 4000;
String msg = "";
byte[] tempbuffer = new byte[MAX_BUFFER_BYTES];
try {
int numReadedBytes = in.read(tempbuffer, 0, tempbuffer.length);
msg = new String(tempbuffer, 0, numReadedBytes, "utf-8");
tempbuffer = null;
} catch (Exception e) {
e.printStackTrace();
}
// Log.v(Service139.TAG, "msg=" + msg);
return msg;
}
}