最近因项目需求需要用到socket通讯,研究了一下,这里只写了Android端TCP协议与服务器的连接,发送消息,待深入了解再记录接收消息,UDP协议发送和接收。废话不多,直接上代码,可直接复制使用。
public class MainActivity extends FragmentActivity {
private ExecutorService mExecutorService = null;
private PrintWriter printWriter;
private static final String HOST = "192.168.2.1";//服务器地址
private static final int PORT = 5536;//连接端口号
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mExecutorService = Executors.newCachedThreadPool();
//进来直接socket连接
connect();
}
@Override
public void onClick(View view) {
send("我来自Android客户端");
}
private void connect() {
mExecutorService.execute(new connectService());
}
//发送消息
public void send(String msg) {
mExecutorService.execute(new sendService(msg));
}
//断开连接
public void disconnect() {
mExecutorService.execute(new sendService("跟服务端断开连接时的信号"));
}
private class sendService implements Runnable {
private String msg;
sendService(String msg) {
this.msg = msg;
}
@Override
public void run() {
printWriter.println(this.msg);
}
}
private class connectService implements Runnable {
@Override
public void run() {
try {
Socket socket = new Socket(HOST, PORT);
// socket.setSoTimeout(60000);
printWriter = new PrintWriter(new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream(),"UTF-8")), true);
//连接后发送第一条消息
printWriter.write("跟服务端连接时的信号");
printWriter.flush();
} catch (Exception e) {
Log.e("connectService", (e.getMessage()));
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//退出后断开连接
disconnect();
}
}
到这里完了,流程不复杂,需要理解socket通讯机制。菜鸟一枚,请各位大神指点