客户端代码:
package com.example.sockettest;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
private Intent mServiceIntent;
private IBackService iBackService;
private TextView tv;
private EditText et;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initData();
}
private void initViews() {
tv = (TextView) findViewById(R.id.tv);
et = (EditText) findViewById(R.id.editText1);
btn = (Button) findViewById(R.id.button1);
}
private void initData() {
mServiceIntent = new Intent(this, BackService.class);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String string = et.getText().toString().trim();
Log.i(TAG, string);
try {
Log.i(TAG, "是否为空:" iBackService);
if (iBackService == null) {
Toast.makeText(getApplicationContext(),
"没有连接,可能是服务器已断开", Toast.LENGTH_SHORT).show();
} else {
boolean isSend = iBackService.sendMessage(string);
Toast.makeText(MainActivity.this,
isSend ? "success" : "fail", Toast.LENGTH_SHORT)
.show();
et.setText("");
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
});
}
@Override
protected void onStart() {
super.onStart();
bindService(mServiceIntent, conn, BIND_AUTO_CREATE);
// 开始服务
registerReceiver();
}
@Override
protected void onResume() {
super.onResume();
// 注册广播 最好在onResume中注册
// registerReceiver();
}
@Override
protected void onPause() {
super.onPause();
// 注销广播 最好在onPause上注销
unregisterReceiver(mReceiver);
// 注销服务
unbindService(conn);
}
// 注册广播
private void registerReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BackService.HEART_BEAT_ACTION);
intentFilter.addAction(BackService.MESSAGE_ACTION);
registerReceiver(mReceiver, intentFilter);
}
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 消息广播
if (action.equals(BackService.MESSAGE_ACTION)) {
String stringExtra = intent.getStringExtra("message");
tv.setText(stringExtra);
} else if (action.equals(BackService.HEART_BEAT_ACTION)) {// 心跳广播
tv.setText("正常心跳");
}
}
};
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// 未连接为空
iBackService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 已连接
iBackService = IBackService.Stub.asInterface(service);
}
};
}
服务端代码:
package com.mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaServer {
/**
* @param args
*/
public static void main(String[] args) {
SocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
acceptor.setHandler(new ServerHandler());
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
int bindPoit = 9900;
try {
acceptor.bind(new InetSocketAddress(bindPoit));
} catch (IOException e) {
e.printStackTrace();
}
}
}
资源文件列表
SocketTestService_服务器端/.classpath , 484
SocketTestService_服务器端/.project , 376
SocketTestService_服务器端/.settings/org.eclipse.jdt.core.prefs , 587
SocketTestService_服务器端/bin/com/mina/MinaServer.class , 2046
SocketTestService_服务器端/bin/com/mina/ServerHandler.class , 2836
SocketTestService_服务器端/libs/mina-core-2.0.7.jar , 644783
SocketTestService_服务器端/libs/slf4j-api-1.5.0.jar , 16591
SocketTestService_服务器端/libs/slf4j-api-1.6.6.jar , 26176
SocketTestService_服务器端/libs/slf4j-nop.jar , 12592
SocketTestService_服务器端/src/com/mina/MinaServer.java , 1002
SocketTestService_服务器端/src/com/mina/ServerHandler.java , 1587
SocketTest_客户端/.classpath , 364
SocketTest_客户端/.project , 871
SocketTest_客户端/.settings/org.eclipse.jdt.core.prefs , 177
SocketTest_客户端/AndroidManifest.xml , 943
SocketTest_客户端/bin/aidl/com/example/sockettest/IBackService.aidl , 98
SocketTest_客户端/bin/AndroidManifest.xml , 943
SocketTest_客户端/bin/classes/com/example/sockettest/BackService$1.class , 823
SocketTest_客户端/bin/classes/com/example/sockettest/BackService$2.class , 1769
SocketTest_客户端/bin/classes/com/example/sockettest/BackService$InitSocketThread.class , 910
SocketTest_客户端/bin/classes/com/example/sockettest/BackService$ReadThread.class , 2770
SocketTest_客户端/bin/classes/com/example/sockettest/BackService.class , 4832
SocketTest_客户端/bin/classes/com/example/sockettest/BuildConfig.class , 353
SocketTest_客户端/bin/classes/com/example/sockettest/IBackService$Stub$Proxy.class , 1628
SocketTest_客户端/bin/classes/com/example/sockettest/IBackService$Stub.class , 2041
SocketTest_客户端/bin/classes/com/example/sockettest/IBackService.aidl , 98
SocketTest_客户端/bin/classes/com/example/sockettest/IBackService.class , 342
SocketTest_客户端/bin/classes/com/example/sockettest/MainActivity$1.class , 1407
SocketTest_客户端/bin/classes/com/example/sockettest/MainActivity$2.class , 1244
SocketTest_客户端/bin/classes/com/example/sockettest/MainActivity$3.class , 2276
SocketTest_客户端/bin/classes/com/example/sockettest/MainActivity.class , 3509
SocketTest_客户端/bin/classes/com/example/sockettest/R$attr.class , 352
SocketTest_客户端/bin/classes/com/example/sockettest/R$dimen.class , 473
SocketTest_客户端/bin/classes/com/example/sockettest/R$drawable.class , 419
SocketTest_客户端/bin/classes/com/example/sockettest/R$id.class , 495
SocketTest_客户端/bin/classes/com/example/sockettest/R$layout.class , 415
SocketTest_客户端/bin/classes/com/example/sockettest/R$menu.class , 400
SocketTest_客户端/bin/classes/com/example/sockettest/R$string.class , 484
SocketTest_客户端/bin/classes/com/example/sockettest/R$style.class , 443
SocketTest_客户端/bin/classes/com/example/sockettest/R.class , 713
SocketTest_客户端/bin/classes.dex , 454676
SocketTest_客户端/bin/dexedLibs/android-support-v4-ab7512e887dd581257496a86108f2a68.jar , 149766
SocketTest_客户端/bin/dexedLibs/android-support-v4-b447d43a4d7a09f5b32950fa43d61fcc.jar , 149766
SocketTest_客户端/bin/jarlist.cache , 119
SocketTest_客户端/bin/res/drawable-hdpi/ic_launcher.png , 5964
SocketTest_客户端/bin/res/drawable-mdpi/ic_launcher.png , 3112
SocketTest_客户端/bin/res/drawable-xhdpi/ic_launcher.png , 9355
SocketTest_客户端/bin/res/drawable-xxhdpi/ic_launcher.png , 17889
SocketTest_客户端/bin/resources.ap_ , 41047
SocketTest_客户端/bin/SocketTest.apk , 198222
SocketTest_客户端/bin/SocketTest_socket长连接心跳包.apk , 198609
SocketTest_客户端/gen/com/example/sockettest/BuildConfig.java , 164
SocketTest_客户端/gen/com/example/sockettest/IBackService.java , 2700
SocketTest_客户端/gen/com/example/sockettest/R.java , 2653
SocketTest_客户端/ic_launcher-web.png , 51394
SocketTest_客户端/libs/android-support-v4.jar , 385685
SocketTest_客户端/LICENSE , 10249
SocketTest_客户端/proguard-project.txt , 781
SocketTest_客户端/project.properties , 563
SocketTest_客户端/README.md , 13
SocketTest_客户端/res/drawable-hdpi/ic_launcher.png , 7658
SocketTest_客户端/res/drawable-mdpi/ic_launcher.png , 3777
SocketTest_客户端/res/drawable-xhdpi/ic_launcher.png , 12516
SocketTest_客户端/res/drawable-xxhdpi/ic_launcher.png , 24777
SocketTest_客户端/res/layout/activity_main.xml , 1084
SocketTest_客户端/res/menu/main.xml , 261
SocketTest_客户端/res/values/dimens.xml , 218
SocketTest_客户端/res/values/strings.xml , 225
SocketTest_客户端/res/values/styles.xml , 695
SocketTest_客户端/res/values-sw600dp/dimens.xml , 201
SocketTest_客户端/res/values-sw720dp-land/dimens.xml , 275
SocketTest_客户端/res/values-v11/styles.xml , 332
SocketTest_客户端/res/values-v14/styles.xml , 389
SocketTest_客户端/SocketTest/AndroidManifest.xml , 932
SocketTest_客户端/SocketTest/libs/android-support-v4.jar , 349252
SocketTest_客户端/SocketTest/project.properties , 563
SocketTest_客户端/SocketTest/res/drawable-hdpi/ic_action_search.png , 3120
SocketTest_客户端/SocketTest/res/drawable-hdpi/ic_launcher.png , 3014
SocketTest_客户端/SocketTest/res/drawable-ldpi/ic_launcher.png , 1504
SocketTest_客户端/SocketTest/res/drawable-mdpi/ic_action_search.png , 3030
SocketTest_客户端/SocketTest/res/drawable-mdpi/ic_launcher.png , 1969
SocketTest_客户端/SocketTest/res/drawable-xhdpi/ic_action_search.png , 3199
SocketTest_客户端/SocketTest/res/drawable-xhdpi/ic_launcher.png , 4006
SocketTest_客户端/SocketTest/res/layout/activity_main.xml , 1097
SocketTest_客户端/SocketTest/res/menu/activity_main.xml , 240
SocketTest_客户端/SocketTest/res/values/strings.xml , 239
SocketTest_客户端/SocketTest/res/values/styles.xml , 85
SocketTest_客户端/SocketTest/res/values-v11/styles.xml , 90
SocketTest_客户端/SocketTest/res/values-v14/styles.xml , 104
SocketTest_客户端/SocketTest/src/org/feng/sockettest/MainActivity.java , 3267
SocketTest_客户端/SocketTest/src/org/feng/sockettest/server/BackService.java , 4707
SocketTest_客户端/SocketTest/src/org/feng/sockettest/server/IBackService.aidl , 100
SocketTest_客户端/SocketTestService/.classpath , 538
SocketTest_客户端/SocketTestService/.project , 376
SocketTest_客户端/SocketTestService/.settings/org.eclipse.jdt.core.prefs , 587
SocketTest_客户端/SocketTestService/bin/com/mina/MinaServer.class , 2066
SocketTest_客户端/SocketTestService/bin/com/mina/ServerHandler.class , 2836
SocketTest_客户端/SocketTestService/libs/mina-core-2.0.7.jar , 644783
SocketTest_客户端/SocketTestService/libs/slf4j-api-1.6.6.jar , 26176
SocketTest_客户端/SocketTestService/libs/slf4j-nop-1.6.6.jar , 4781
SocketTest_客户端/SocketTestService/src/com/mina/MinaServer.java , 1007
SocketTest_客户端/SocketTestService/src/com/mina/ServerHandler.java , 1587
SocketTest_客户端/src/com/example/sockettest/BackService.java , 4998
SocketTest_客户端/src/com/example/sockettest/IBackService.aidl , 98
SocketTest_客户端/src/com/example/sockettest/MainActivity.java , 3533
