android socket通信之传递有标识的值和解出值

1、传递有标识的值:

    加入标识的值:pkgName(所要传递的值) + "&"(标识符,可以随便设) + "open"(标识)

     例如:button的点击事件来触发:

b1.setClicked(new Clicked() {
public void onClicked() {


try {
// 当用户按下发送按钮后,将用户输入的数据封装成Message,然后发送给子线程的Handler
ClientInputRun1 clientInputRun1 = new ClientInputRun1(
pkgName + "&" + "open");
// 客户端启动ClientThread线程创建网络连接,读取来自服务器的数据
new Thread(clientInputRun1).start();


} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
});

    启动线程:

private class ClientInputRun1 implements Runnable {


private Socket s;
OutputStream os = null;
private Object obj;


public ClientInputRun1(Object obj) {
this.obj = obj;
}


public void run() {
BufferedReader in;
try {
s = new Socket("192.168.1.100", 40023);
// 传递值:
os = s.getOutputStream();
os.write((obj.toString() + "\r\n").getBytes("UTF-8"));
System.out.println(obj);
// 获取返回的值:
in = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
String str;
str = in.readLine();
// 对获取的值进行判断:
if (str == null || str.equals("end")) {
return;
} else if ("cz".equals(str)) {
b2.setEnabled(false);

} else if ("none".equals(str)) {
}
System.out.println(str);
} catch (Exception e) {
System.out.println("error");
e.printStackTrace();
}
}

2、解出传递过来的有标识的值,并且返回值:

new Thread(new ServerInputRun()).start();


private class ServerInputRun implements Runnable {
public void run() {
try {
@SuppressWarnings("resource")
ServerSocket serverSocket = new ServerSocket(40023);
while (true) {
System.out.println("ServerInputRun run.....");
client = serverSocket.accept();
socketList.clear();
socketList.add(client); 
br = new BufferedReader(new InputStreamReader(
client.getInputStream(), "UTF-8")); 

content = readFromClient();
toast(content);


}


} catch (Exception e) {
System.out.println("S: Error");
e.printStackTrace();
}


}


}; 
private String readFromClient() {
// TODO Auto-generated method stub
try { 
return br.readLine(); 
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
private void toast(final String strdata) {


String[] arr = (strdata.toString()).split("&");
System.out.println(arr[0] + "  " + arr[1]);


String ccc = "open";
String yyy = "unistall";
String xx= "com.example.xxx";

if (arr[1].equals(ccc)) {
if (arr[0].equals(hezi)) {
System.out.println(xx);
} else {  
}
}
 
if (arr[1].equals(yyy)) {
if (arr[0].equals(xx)) {
System.out.println(xx);
} else {
 
}
}
}


注意:传递有标识的值主要用到的是split,使用的时候可以去查查split,这样促进学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值