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