Android 聊天室
Android 聊天室
服务器实现:
public class MzzQQServer {
//端口随便设置,但必须是比1024大
private static final int SERVERPORT = 6666 ;
private static List<Socket> clientList = new ArrayList<Socket>();
//线程池
private ExecutorService executorService = null ;
private ServerSocket server = null ;
public static void main(String[] args) {
new MzzQQServer();
}
public MzzQQServer() {
try {
server = new ServerSocket(SERVERPORT);
//得到一个线程池
executorService = Executors.newCachedThreadPool();
Socket client = null ;
//得到一个socket,此方法是阻塞方法
client = server.accept();
clientList.add(client);
executorService.execute(new ThreadServer(client));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static class ThreadServer implements Runnable {
private BufferedReader br ;
private PrintWriter pw ;
private Socket socket ;
private String strMsg ;
public ThreadServer(Socket socket) throws IOException {
this.socket = socket ;
br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
while((strMsg = br.readLine()) != null) {
sendMessage();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//发送消息给所有客户端
private void sendMessage() throws IOException {
for (Socket socket : clientList) {
pw = new PrintWriter(socket.getOutputStream() , true);
pw.println(strMsg);
}
}
}
}
|
评论暂时关闭