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);
}
}

}
}

  • 1
  • 2
  • 3
  • 下一页

相关内容