视频监控(UDPSERVER)

UDPServer.java


import  java.net. * ;
import  java.util.Timer;
import  java.util.TimerTask;
import  java.io. * ;
 
// import javax.swing.*; 
import  java.lang.Thread;
import  javax.swing.plaf.metal.MetalLookAndFeel;



public   class  UDPServer  extends  Thread {
  
// static final int INPORT=1978;
   static final int P_SIZE = 10240
   
private DatagramPacket dp = null;
   
private DatagramSocket socket;
   
   
private int flag = -1;
   
private int exitFlag = 0;
   
byte[] senddata = null;
   
private boolean continu = true;
   v_ServerJFrame sjf 
= null;
    

  
   
   
public UDPServer(int port,v_ServerJFrame p_sjf){
       
       
  
//   initFrameFace();
    this.sjf = p_sjf;
   
   
try{
   
     dp 
= new DatagramPacket(new byte[256],256);
     socket
=new DatagramSocket(port);            
     
//System.out.println("Server started on !"+ String.valueOf(port));
   }
catch(SocketException e){
         e.printStackTrace();
   }

      
   
//  sjf = new v_ServerJFrame();
   
//  sjf.setVisible(true);
 
//  sjf.StartCapture();
   
   }


   
public void run()  {
     
try{
       
                       
       socket.setSoTimeout(
20 * 1000)  ;       
      
       
       
while(continu){
           
                
      
         socket.receive(dp);
     
        
// String rcvd=Dgram.toString(dp)+",from ddress:"+dp.getAddress()+
         
//            ",port:"+dp.getPort();
         
//System.out.println(rcvd);
       
         
//String echoString="Echoed:"+rcvd;         
         
         String rcvd 
= Dgram.toString(dp);
         
if (rcvd.indexOf("first"!= -1 ){
             flag 
= -1;
         }
else if(rcvd.indexOf("killself"!= -1){
             exitFlag 
= 1;             
         
//    AcceptMsg.t_num --;
         }

          
         
       
//  System.out.println(rcvd);
         
//System.out.println(rcvd.indexOf("getdatalen")!=-1);
        if (flag == -1)
            
                 
            senddata 
= sjf.CaptureAction();
            
             
           
          
// int dataLen = senddata.length;         
           
//String headdata = "datasstart";
          /* byte [] hdb = headdata.getBytes();
           senddata = new byte[hdb.length + dataLen];
           System.arraycopy(hdb,0,senddata,0,hdb.length);
           System.arraycopy(vdata,0,senddata,hdb.length,dataLen);
*/

        }

         
           
            
// int taildata = dataLen % 1024;
            
// int block = dataLen/1024;
         
//System.out.println(senddata.length);     
     
 
     
          
if (flag <= P_SIZE/1024-2 ){
                 flag 
++;
                  DatagramPacket echo 
= Dgram.toDatagram(senddata,flag*1024,1024,dp.getAddress(),dp.getPort());
                socket.send(echo);
         }
else if(flag >= P_SIZE/1024-1){
                DatagramPacket echo 
= Dgram.toDatagram(senddata,flag*1024,1024,dp.getAddress(),dp.getPort());
                socket.send(echo);
                    flag 
= -1;
                  
//  System.out.println("a pic send over");

         }
 
      
         
            
/* if (taildata!=0){
                 DatagramPacket echo = Dgram.toDatagram(senddata,5*1024,10,dp.getAddress(),dp.getPort());
                socket.send(echo);
          //   }
            
           /* System.out.println(senddata.length);
             DatagramPacket echo = Dgram.toDatagram(senddata,0,senddata.length,dp.getAddress(),dp.getPort());
            socket.send(echo);
*/

        
        
         
if (exitFlag == 1{
           System.out.println(dp.getAddress() 
+ ":客户端关闭");           
           continu 
= false;     
         }
;  
         
         
         
      }

     }
catch(SocketException e){
         
//system.err.println("Can't open socket");
         System.err.println(e.getMessage());      
         System.exit(
1);
       }
catch(SocketTimeoutException e){
         System.out.println(dp.getAddress()
+":服务线程长时间无请求数据,超时!");        
       }
catch(IOException e){
              System.err.println(
"Communication error!");
       }
catch(NullPointerException e){
               System.out.println(
"图像数据还未准备好....");
               sjf.StartCapture();            
       }
finally{
             socket.close();             
             
synchronized(this){ AcceptMsg.t_num -- ;}
         
       }

   }

 
/*  public static void main(String[] args){
     new UDPServer();
   }
   private  void initFrameFace(){
       UIManager.put("swing.boldMetal", Boolean.FALSE);
    JDialog.setDefaultLookAndFeelDecorated(true);
    JFrame.setDefaultLookAndFeelDecorated(true);
   }
*/

 
}



 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值