⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatmainjframe.java

📁 多线程扫描IP段
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public static javax.swing.JTable user;    // End of variables declaration//GEN-END:variables    public static int n;//参于聊天者数量;    public static int th;//thread number   // public static boolean stop;    public static boolean finish;    public static ArrayList list=new ArrayList();}final class Ip{              //将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理      public void Ip(){}    public static long strToIp(String strIp) {                 long[] ip=new long[4];              int position1=strIp.indexOf(".");              int position2=strIp.indexOf(".",position1+1);              int position3=strIp.indexOf(".",position2+1);                       ip[0]=Long.parseLong(strIp.substring(0,position1));              ip[1]=Long.parseLong(strIp.substring(position1+1,position2));              ip[2]=Long.parseLong(strIp.substring(position2+1,position3));              ip[3]=Long.parseLong(strIp.substring(position3+1));              if(ip[0]==0|ip[3]==0|ip[0]>255|ip[1]>255|ip[2]>255|ip[3]>255)                     return 0;              else                     return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];     }     public static String longToStr(long longIp){                 StringBuffer sb=new StringBuffer("");              //直接右移24位              sb.append(String.valueOf(longIp>>>24));              sb.append(".");                        //将高8位置0,然后右移16位              sb.append(String.valueOf((longIp&0x00FFFFFF)>>>16));               sb.append(".");              sb.append(String.valueOf((longIp&0x0000FFFF)>>>8));              sb.append(".");              sb.append(String.valueOf(longIp&0x000000FF));              String sc=sb.toString();              String[] ss = sc.split("\\.");             if(Integer.parseInt(ss[3])==0)                    return null;              else                    return sb.toString();     }   }//////////*************扫描主机段class Scan {    public void Scan(){        nu=0; // current thread number    }    public static int nu;    public static ArrayList arr=new ArrayList();    public void done(long ip1,long ip2)    {                boolean b=false;        long[] ipduan=new long[(int)Math.abs(ip1 - ip2) + 1];        for(int k=0;k<=Math.abs(ip1 - ip2);k++)        {                              if (ip1-ip2 < 0)                         ipduan[k]=ip1+k;                    else                         ipduan[k]=ip2+k;        }            // ThreadGroup grou=new ThreadGroup("asdtiang");        for(int i=0;i<=ipduan.length;i++)        {           if(i==ipduan.length-1)               ChatMainJFrame.finish=true;          // if(ChatMainJFrame.stop==true)          // {             //  System.out.println("stop!!!!!!!!!!!!");             //  break;          // }           nu=Thread.activeCount();          // System.out.println("Current Thread number   "+nu);            if(nu>=ChatMainJFrame.th)            {                try{                    Thread.sleep(1000);                }                catch(Exception e){                    ChatMainJFrame.msg.setText(e.getMessage()+"");                }            }               nu++;            //System.out.println("ip length"+ipduan.length);            String str;            str=null;            str=Ip.longToStr(ipduan[i]);            String threadName=new String("ThreadName:"+str);            ScanOne s=new ScanOne(str,threadName);            s.start();        }       //System.out.println(""+arr.size());    }     }//////*********扫描主机class ScanOne extends Thread{    private  String ip;    public static boolean b;   // public ThreadGroup grou;    public ScanOne(String ip,String name){        b=true;        try{           // System.out.println(name);            this.ip=ip;          }        catch(Exception e)        {            System.out.println(e.getMessage());        }    }    public void run(){        Socket scans=new Socket();        SocketAddress sockaddr = new InetSocketAddress(ip,8000);         try{            scans.connect(sockaddr,50);            for(int i=0;i<Scan.arr.size();i++)            {                if(Scan.arr.get(i).equals(ip))                    b=false;            }            if(b==true)            {                Scan.arr.add(ip);                ChatMainJFrame.user.setValueAt(ip, ChatMainJFrame.n, 0);                ChatMainJFrame.user.setValueAt(scans.getInetAddress().getHostName(),ChatMainJFrame.n , 1);                ChatMainJFrame.n++;            }        }        catch(Exception e)        {            System.out.println(ip+e.getMessage());            b=false;        }        finally{            try{            scans.close();            return;            }            catch(Exception s)            {                ChatMainJFrame.msg.append(s.getMessage()+"\n");            }        }        } }//////////8888888///////server class Server extends Thread{    public Server(){        try{                          s=new ServerSocket(8000);             System.out.println("Server OK!!!!");             this.start();        }        catch(Exception e){             ChatMainJFrame.msg.append(e.getMessage()+"\n");        }    }    private ServerSocket s;    private Socket soc;    public void run(){        while(true){            try{                soc= s.accept();                //OutputStream socOut = soc.getOutputStream();               // PrintWriter pw=new PrintWriter(socOut,true);               // pw.println("Hello "+soc.getInetAddress().getHostAddress());            }            catch(Exception e){                    //ChatMainJFrame.msg.append(e.getMessage()+"\n");            }            finally{            if(soc!=null)                try{                soc.close();                }                catch(Exception w){                }                     }        }    }} /////////chat class Chat extends Thread{     public static DatagramSocket socket;     public Chat(){       try{          System.out.println("chat ok!");          socket=new DatagramSocket(3000);           // DatagramSocket socket=new DatagramSocket(2000);          System.out.println("chat ok!!!!!!");          this.start();      }      catch(Exception e3){           ChatMainJFrame.msg.append(e3.getMessage()+"\n");      } } public void run() {     try{;        String rname;         rname=null;         DatagramPacket packet=new DatagramPacket(new byte[1024],1024);          while(true){             socket.receive(packet);             rname=packet.getAddress().getHostName();             String info;             info=new String(packet.getData(),0,packet.getLength());             System.out.println(info.length());             ChatMainJFrame.msg.append("From:"+rname+"\n"+"     "+info+"\n");            // System.out.println("received");         }     }     catch(Exception e){          ChatMainJFrame.msg.append(e.getMessage()+"\n");     } } }       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -