6. 发送消息
public class SendMessage {
private OnSendListener mListener;
public void setOnSendListener(OnSendListener listener) {
mListener = listener;
}
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
mListener.onSend((String[]) msg.obj);
};
};
// send:from:to:message
public void send(final String from , final String to, final String msg) {
new Thread(new Runnable() {
@Override
public void run() {
Socket socket = null;
try {
socket = new Socket();
socket.connect(new InetSocketAddress("192.168.100.100", 8888), 4000);
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println("send:" + from + ":" + to + ":" + msg);
writer.flush();
Message message = mHandler.obtainMessage(
Constant.SUCCESS, new String[] {to, msg});
message.sendToTarget();
} catch(Exception e) {
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
public interface OnSendListener {
public void onSend(String[] msg);
}
}
7. 接收消息,死循环,但阻塞,没啥问题
public class ReceiverMessage {
private OnReceiverListener mListener;
public void setOnReceiverListener(OnReceiverListener listener) {
mListener = listener;
}
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
String[] cmds = (String[]) msg.obj;
mListener.onReceiver(cmds[0], cmds[1]);
};
};
public void run() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = PConnection.socket;
while(true) {
System.out.println("wait for message...");
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
if(line.startsWith("rec")) {
//rec:fromuser:touser:message
String[] cmds = line.split(":");
System.out.println(cmds[0] + ":" + cmds[1] + ":" + cmds[2] + ":" + cmds[3]);
Message msg = mHandler.obtainMessage(Constant.SUCCESS, new String[] {cmds[1], cmds[3]});
msg.sendToTarget();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public interface OnReceiverListener {
public void onReceiver(String user, String msg);
}
}










