📄 chatmainjframe.java
字号:
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 + -