实现功能
app收到消息,并且展示到控件上
Socket客户端代码
MainActivity.java
package com.example.socket.dzz;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
import com.example.socket.dzz.nets.NetUtils;
public class MainActivity extends Activity {
Handler handler;
TextView tx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tx = (TextView) findViewById(R.id.tx);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle b = msg.getData();
String str = b.getString("msg");
tx.setText(str);
}
};
}
public void sendMessage(View v){
switch(v.getId()){
case R.id.fh:
NetUtils.sendMessageHandler("gofoward", handler);
break;
}
}
}
NetUtils.java
package com.example.socket.dzz.nets;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class NetUtils {
public static void sendMessageHandler(final String command, final Handler h){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Socket client = new Socket("192.168.1.103", 8800);
OutputStream out = client.getOutputStream(); //发送数据的通道
out.write(command.getBytes()); // 发送通道,发送数据
int len;
InputStream in = client.getInputStream();
byte[] data = new byte[128];
len = in.read(data);
String str = new String(data, 0, len);
Message msg = new Message();
Bundle b = new Bundle();
b.putString("msg", str);
msg.setData(b);
h.sendMessage(msg);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}