`
helpbs
  • 浏览: 1163588 次
文章分类
社区版块
存档分类
最新评论

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

}
}





客户端实现:

Activity ---->


客户端xml的实现

chat.xml:






分享到:
评论
1 楼 dukunpeng22 2015-07-22  
想问楼主,关于实时通讯,Socket是最方便的吗,这个东西在客户端的性能怎么样

相关推荐

Global site tag (gtag.js) - Google Analytics