简单servlet socket 整合

来源:互联网 发布:新世纪网络平台 编辑:程序博客网 时间:2024/05/24 00:52
package filter; 

import java.io.IOException; 

import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import socket.SocketServer; 

/* 
初始化socket 
*/ 
public class RFilter extends HttpServlet { 
private static final long serialVersionUID = 1L; 
SocketServer socket; 
    @Override 
public void init(ServletConfig config) throws ServletException { 
super.init(config); 
socket=new SocketServer(); 
socket.start(); 
System.out.println("load on start!"); 



    public RFilter() { 
        super(); 
    } 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

System.out.println("***************RFilter doGet"); 
socket.cc.handCom(); 




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
// TODO Auto-generated method stub 
System.out.println("***************RFilter doPost"); 
socket.cc.handCom(); 




/*  
* To change this template, choose Tools | Templates  
* and open the template in the editor.  
*/  
package socket;   
  
import java.io.IOException; 
import java.net.InetSocketAddress; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.nio.channels.ServerSocketChannel; 
import java.nio.channels.SocketChannel; 

import filter.ClientController; 
  
/* 
  socket服务端类 
*/ 
public class SocketServer extends Thread{   
  
    ServerSocket ss = null;                         //socket连接   
    public ClientController cc; 
    
  
    public SocketServer() { 
super(); 
  try { 
//
ss = new ServerSocket(9999); 
  cc=new ClientController(); 

} catch (IOException e) { 
e.printStackTrace(); 
}   

  
    public void run() {   
    
       System.out.println("准备好接收数据!"); 
         try{ 
        
            while (true) {   
              Socket  socket = ss.accept();   
                if(socket!=null){ 
                cc.addNewClient(socket); 
                } 
            }   
  
        } catch (IOException ex) {   
            System.out.println(ex.toString());   
        }   
  
  
    }   
  
}  


package filter; 

import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.Socket; 
import java.nio.channels.SocketChannel; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.zip.DeflaterOutputStream; 

import flex.messaging.io.SerializationContext; 
import flex.messaging.io.amf.Amf3Output; 
/* 
  管理与客户端通讯的业务类 
*/ 
public class ClientController { 
private ArrayList<Socket> clients; 
private SerializationContext context = new SerializationContext(); 
public ClientController(){ 

clients=new ArrayList<Socket>(); 




public void handCom(){ 
System.out.println("ClientController size:"+clients.size()); 
for(Socket inComing:clients){ 
  try {   
  
          DataOutputStream dos = new DataOutputStream(inComing.getOutputStream());   

          Amf3Output out = new Amf3Output(context);   
          DeflaterOutputStream stream = new DeflaterOutputStream(dos);   
          out.setOutputStream(stream);   

          Map map = new HashMap();   
          String[] arr = "1,2,3,4,5".split(",");   

          map.put("datas", arr);   
          map.put("userName", "mumuyu99");   
          map.put("fullName", "最新消息");   
           

          out.writeObject(map);   
          stream.finish();   

          out.flush(); 
              
          dos.flush();   
              System.out.println("clientController handCom"); 

      } catch (IOException ex) {   
          ex.printStackTrace(); 
      }   





public  void addNewClient(Socket socket){ 
clients.add(socket); 
System.out.println("****************用户登录************"); 
System.out.println("******登录用户数:"+clients.size()+"*****"); 



}