package com.com.mr_wrong.Socket;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import com.Utils.LogUtils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
/**
* Created by Mr_Wrong on 15/9/30.
*/
public class TCPServerService extends Service {
private boolean mIsServiceDestoryed = false;
private String[] mDefinedMessages = new String[]{"你好啊", "buhao", "哈哈哈", "呵呵", "笔笔什么呢"};
@Override
public void onCreate() {
new Thread(new TcpService()).start();
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
mIsServiceDestoryed = true;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
private class TcpService implements Runnable {
@Override
public void run() {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8688);
} catch (IOException e) {
LogUtils.d("zhao'bu'd找不到8688端口玩个毛");
e.printStackTrace();
}
while (!mIsServiceDestoryed) {
try {
final Socket client = serverSocket.accept();
LogUtils.e("接受到了");
new Thread() {
@Override
public void run() {
try {
responseClient(client);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private void responseClient(Socket client) throws IOException {
//读取客户端消息
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
//发送消息给客户端
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(client.getOutputStream())), true);
out.println("欢迎啊 小伙子");
while (!mIsServiceDestoryed) {
String str = in.readLine();
LogUtils.e("来自客户端的消息" + str);
if (str == null) {
break;//断开连接
}
int i = new Random().nextInt(mDefinedMessages.length);
String msg = mDefinedMessages[i];
out.println(msg);
LogUtils.e("服务器发送消息了:" + msg);
}
LogUtils.e("客户端退出了");
if (in != null)
in.close();
if (out != null)
out.close();
client.close();
}
}