本博文转载自http://blog.csdn.net/xiaanming/article/details/9750689
// 含有3个线程的线程池
private static final ExecutorService executorSocket = Executors.newFixedThreadPool(3);
/**
*
* @param <T>
* @param url
* WebService服务器地址
* @param methodName
* WebService的调用方法名
* @param properties
* WebService的参数
* @param webServiceCallBack
* 回调接口
*/
public void callSocket(SocketPacket socketPkg,
final SocketCallBack socketCallBack) {
this.socketPackage=socketPkg;
// 用于子线程与主线程通信的Handler
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 将返回值回调到callBack的参数中
socketCallBack.callBack((SocketPacket) msg.obj);
}
};
// 开启线程去访问WebService
executorSocket.submit(new Runnable() {
@Override
public void run() {
try {
socket = new Socket("192.168.2.103",9091);
System.out.println("客户端socket运行!");
} catch (UnknownHostException e) {
System.err.println("socket链接异常,链接信息:"+"192.168.2.102");
e.printStackTrace();
} catch (IOException e) {
System.err.println("socket IO异常");
e.printStackTrace();
}
SocketPacket resPacket = null;
try {
resPacket =sentSocket(socketPackage);
} catch (Exception e) {
try {
System.err.println("socket发送消息异常,发送信息:"+new String(socketPackage.getByteStream()));
} catch (UnsupportedEncodingException e1) {
// System.err.println("socket将socketPackage转为字符串异常,socketPackage信息:"+socketPackage.getByteStream());
e1.printStackTrace();
}
e.printStackTrace();
} finally {
// 将获取的消息利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(0,
resPacket));
}
}
});
}
/**
*
*
* @author
*
*/
public interface SocketCallBack {
public void callBack(SocketPacket socketPacket);
}