See More

package com.server; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.swing.JOptionPane; import com.server.control.SendFileThread; import com.server.util.GetFileInputStream; import com.server.util.SendFile; import com.server.util.WriteUserText; public class Server { public static Map ipMap = Collections.synchronizedMap(new HashMap()); public static Map ipMap1 = Collections.synchronizedMap(new HashMap()); /* * ·þÎñÆ÷³õʼ»¯´°¿Ú */ public static Server_Frame sf = null; /* * ÿ¸ö¿Í»§»úÁ´½Ó¶ÔÓ¦µÄMap±êʶ */ public static int flag = 0; public static int count = 0; public static boolean fileFlag = false; public static void util(Socket socket, String ip) { if (ipMap.containsKey(ip)) { flag = ipMap.get(ip);// È¡³öIP¶ÔÓ¦µÄÐòºÅ /* * Èç¹û¼à¿Ø¹¦ÄÜûÓпªÆô£¬Îҿ϶¨ÊDz»·ÅÐе쬵«ÊÇÁ´½ÓÒÀ¾É±£´æ */ ServerThread a = new ServerThread(socket, flag,ip); System.out.println("1¡¢isAlive" + a.isAlive()); a.start(); System.out.println("2¡¢isAlive" + a.isAlive()); } else { ipMap.put(ip, (ipMap.size()) + 1);// µÚһ̨»úÆ÷¶ÔÓ¦1 flag = ipMap.size();// µÚһ̨»úÆ÷Êä³ö1 /* * ¿ªÆôÈÕÖ¾¼Ç¼Ïß³Ì */ new WriteUserText(ip).start(); ServerThread a = new ServerThread(socket, flag,ip); System.out.println("1¡¢isAlive" + a.isAlive()); a.start(); System.out.println("2¡¢isAlive" + a.isAlive()); } } public static boolean mainListener(ServerSocket server) { // ·þÎñÆ÷¶ËµÄSocket Socket socket = null; try { socket = server.accept(); String ip = socket.getInetAddress().getHostAddress(); util(socket, ip); /* * if (ipMap.size() > 52) { * * break;// Ó¦¸Ã¾Ü¾øÁ´½Ó } */ // Èç¹ûµã»÷ÁË·¢ËÍÎļþ°´Å¥£¬Ôò´«ÊäͼƬµÄ¹¦ÄÜÓ¦¸Ã±»È¡Ïûµô if (fileFlag/* °´Å¥±»µã»÷ */) { server.close(); return false; } } catch (IOException e) { System.out.println("1"); e.printStackTrace(); } return true; } public static void sendFile(ServerSocket server) { // ´Ë´¦ÒªÑ­»·¼àÌýËùÓпͻ§¶Ë Socket socket = null; InputStream in = null; DataOutputStream os = null; System.out.println("count=" + count); System.out.println("size=" + ipMap.size()); /* * ÔÝʱ»¹Ã»Óнâ¾öinΪ¿ÕµÄÇé¿ö£¬¼´ÀÏʦȡÏû·¢ËÍÎļþ */ in = GetFileInputStream.getFileInputStream(); while (true) { try { socket = server.accept(); /* * »ñÈ¡ÊäÈëÁ÷£¬Êä³öÁ÷£¬¸æË߿ͻ§¶ËÎÒÊÇÒª·¢Îļþ */ os = new DataOutputStream(socket.getOutputStream()); os.writeUTF("file");//µ½×îºóÔÚ¹Ø±Õ String ip = socket.getInetAddress().getHostAddress(); if (ipMap1.containsKey(ip)) { in = new FileInputStream(new File(SendFile.fileName)); System.out.println(4122); SendFileThread b = new SendFileThread(socket, in); System.out.println(77); b.start(); try { b.join(); count++; } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(78); System.out.println("count=" + count); System.out.println("size=" + ipMap.size()); } else { System.out.println(5453); ipMap1.put(ip, socket); in = new FileInputStream(new File(SendFile.fileName)); SendFileThread b = new SendFileThread(socket, in); System.out.println(777); System.out.println(in); b.start(); try { b.join(); count++; System.out.println(count); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(7875); System.out.println("count=" + count); System.out.println("size=" + ipMap.size()); } System.out.println(4552); } catch (IOException e1) { System.out.println("233"); } if (ipMap.size() == count) { System.out.println(12312); JOptionPane.showMessageDialog(null, "Îļþ·¢ËÍÍê³É£¡"); count = 0; if (in != null) try { in.close(); } catch (IOException e) { System.out.println(11); e.printStackTrace(); } if (os != null) try { os.close(); } catch (IOException e) { System.out.println(11); e.printStackTrace(); } break; } } } public static void main(String[] args) { // ´´½¨Ò»¸ö·þÎñÆ÷¶ËServerSocket£¬¶Ë¿ÚºÅΪ12000 ServerSocket server; try { sf = new Server_Frame(); server = new ServerSocket(12000); /* * ²ÉÓÃËÀÑ­»·£¬²»¶Ï¼àÌýÀ´×Ô¿Í»§¶ËµÄÁ´½Ó */ while (true) { System.out.println(23); boolean isTrue = mainListener(server); // ÒѾ­¹Ø±Õ if (!isTrue) { System.out.println(1); server = new ServerSocket(10000); sendFile(server); //server.close(); //ÒòΪÊDZ¾»ú£¬ËùÒÔÌáʾ±»Õ¼Óà fileFlag = false; server = new ServerSocket(12000); } /* * if ÏûÏ¢°´Å¥µã»÷ÁË£¬...... */ /* * if Ô¶³Ì²Ù¿Ø°´Å¥µã»÷ÁË£¬...... */ } } catch (IOException e) { System.out.println(12121); e.printStackTrace(); } catch (Exception e) { System.out.println(121); // try { // server = new ServerSocket(12000); // } catch (IOException e1) { // e1.printStackTrace(); // } e.printStackTrace(); } } }