1.简单服务器端 /* import java.net.*; import java.io.*; */ ServerSocket server=null; try { server=new ServerSocket(%%1); }catch(Exception e){ System.out.println("不能监听:"+e.toString()); } Socket socket=null; try { socket=server.accept(); BufferedReader %%3=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter %%4=new PrintWriter(socket.getOutputStream()); String %%2=%%3.readLine(); %%4.println(""); %%4.flush(); %%4.close(); %%3.close(); } catch(IOException e){ System.out.println("出错:"+e.toString()); }finally{ try { if(socket!=null){ socket.close(); server.close(); } } catch(IOException e){ e.printStackTrace(); } } 2.简单客户端 /* import java.net.*; import java.io.*; */ Socket socket=null; try { socket=new Socket(%%1,%%2); PrintWriter %%3=new PrintWriter(socket.getOutputStream()); BufferedReader %%4 = new BufferedReader(new InputStreamReader(socket.getInputStream())); %%3.println(""); %%3.flush(); String %%5=%%4.readLine(); %%6 %%3.close(); %%4.close(); }catch(Exception e){ e.printStackTrace(); } finally{ try { socket.close(); } catch(IOException e){ e.printStackTrace(); } } 3.获得本机IP //import java.net.*; String strIP = null; try { strIP =InetAddress.getLocalHost().getHostAddress().toString(); } catch(UnknownHostException e) { e.printStackTrace(); } /* %%1=InetAddress.getLocalHost().getHostAddress(); Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { System.out.println("IP:" + ips.nextElement().getHostAddress()); } } } catch (Exception e) { e.printStackTrace(); } */ 4.端对端通信 //import java.net.*; byte[] buf=new byte[1024]; DatagramSocket ds=new DatagramSocket(%%1); DatagramPacket ip=new DatagramPacket(buf,buf.length); while(true){ ds.receive(ip); } InetAddress target=InetAddress.getByName(%%2); DatagramSocket ds=new DatagramSocket(%%3); String str=%%4; byte[] buf=str.getBytes(); DatagramPacket op=new DatagramPacket(buf,buf.length,target,%%5); ds.send(op); ds.close(); 5.点对点通信 /* import java.io.*; import java.net.*; */ public class %%6 extends Thread { @Override public void run() { ServerSocket server = null; try { server = new ServerSocket(5000); } catch (Exception e) { System.out.println("不能监听:" + e.toString()); } Socket socket = null; try { socket = server.accept(); BufferedReader req = new BufferedReader(new InputStreamReader( socket.getInputStream())); PrintWriter os = new PrintWriter(socket.getOutputStream()); Debug.p(req.readLine()); os.println("Server"); os.flush(); os.close(); req.close(); } catch (IOException e) { System.out.println("出错:" + e.toString()); } finally { try { if (socket != null) { socket.close(); server.close(); } } catch (IOException e) { e.printStackTrace(); } } } Thread t = new %%6(); t.start(); String strIP = null; try { strIP = InetAddress.getLocalHost().getHostAddress().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } Socket socket = null; try { socket = new Socket(strIP, 4000); PrintWriter pw = new PrintWriter(socket.getOutputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(socket .getInputStream())); pw.println("Client"); pw.flush(); Debug.p(br.readLine()); pw.close(); br.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } 6.UDP对时服务器端 /* import java.io.*; import java.net.*; import java.util.*; */ public class UDPServer extends Thread { @Override public void run() { String strIP = null; try { strIP = InetAddress.getLocalHost().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } DatagramSocket ds; try { ds = new DatagramSocket(5000); byte[] buf = new byte[1024]; DatagramPacket dpt = new DatagramPacket(buf, buf.length); ds.receive(dpt); String Read_str = new String(buf, 0, dpt.getLength()); if (Read_str.equals("TimeNow")) { Date t = new Date(); byte[] sendData = String.valueOf("cmd date " +(t.getYear()+1900)+"-"+(t.getMonth()+1)+"-"+t.getDate()+" && time "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds()).getBytes(); DatagramPacket dp = new DatagramPacket(sendData, sendData.length, InetAddress.getLocalHost(), 2000); ds.send(dp); } ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } Thread t = new UDPServer(); t.start(); } 7.UDP对时客户端 /* import java.io.*; import java.net.*; */ String strIP = null; try { strIP = InetAddress.getLocalHost().getHostAddress().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } byte[] buf = new byte[1024]; DatagramSocket ds; try { ds = new DatagramSocket(2000); DatagramPacket ip = new DatagramPacket(buf, buf.length); InetAddress target = InetAddress.getByName(strIP); String sendData = "TimeNow"; byte[] buffer = sendData.getBytes(); DatagramPacket op = new DatagramPacket(buffer, buffer.length, target, 5000); ds.send(op); ds.receive(ip); /* * 当前时间: 15:38:51.12 输入新时间: 当前日期: 2009-05-26 星期二 输入新日期: (年月日) */ try { Runtime.getRuntime().exec(new String(buf, 0, ip.getLength())); } catch (IOException e) { e.printStackTrace(); } ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 8.点对点传输文件 /* import java.io.*; import java.net.*; import java.util.*; */ private HttpURLConnection connection;//存储连接 private int downsize = -1;//下载文件大小,初始值为-1 private int downed = 0;//文加已下载大小,初始值为0 private RandomAccessFile savefile;//记录下载信息存储文件 private URL fileurl;//记录要下载文件的地址 private DataInputStream fileStream;//记录下载的数据流 try{ /*开始创建下载的存储文件,并初始化值*/ File tempfileobject = new File("h:\webwork-2.1.7.zip"); if(!tempfileobject.exists()){ /*文件不存在则建立*/ tempfileobject.createNewFile(); } savefile = new RandomAccessFile(tempfileobject,"rw"); /*建立连接*/ fileurl = new URL("https://webwork.dev.java.net/files/documents/693/9723/webwork-2.1.7.zip"); connection = (HttpURLConnection)fileurl.openConnection(); connection.setRequestProperty("Range","byte="+this.downed+"-"); this.downsize = connection.getContentLength(); //System.out.println(connection.getContentLength()); new Thread(this).start(); } catch(Exception e){ System.out.println(e.toString()); System.out.println("构建器错误"); System.exit(0); } public void run(){ /*开始下载文件,以下测试非断点续传,下载的文件存在问题*/ try{ System.out.println("begin!"); Date begintime = new Date(); begintime.setTime(new Date().getTime()); byte[] filebyte; int onecelen; //System.out.println(this.connection.getInputStream().getClass().getName()); this.fileStream = new DataInputStream( new BufferedInputStream( this.connection.getInputStream())); System.out.println("size = " + this.downsize); while(this.downsize != this.downed){ if(this.downsize - this.downed > 262144){//设置为最大256KB的缓存 filebyte = new byte[262144]; onecelen = 262144; } else{ filebyte = new byte[this.downsize - this.downed]; onecelen = this.downsize - this.downed; } onecelen = this.fileStream.read(filebyte,0,onecelen); this.savefile.write(filebyte,0,onecelen); this.downed += onecelen; System.out.println(this.downed); } this.savefile.close(); System.out.println("end!"); System.out.println(begintime.getTime()); System.out.println(new Date().getTime()); System.out.println(begintime.getTime() - new Date().getTime()); } catch(Exception e){ System.out.println(e.toString()); System.out.println("run()方法有问题!"); } } /*** //FileClient.java import java.io.*; import java.net.*; public class FileClient { public static void main(String[] args) throws Exception { //使用本地文件系统接受网络数据并存为新文件 File file = new File("d:\fmd.doc"); file.createNewFile(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 通过Socket连接文件服务器 Socket server = new Socket(InetAddress.getLocalHost(), 3318); //创建网络接受流接受服务器文件数据 InputStream netIn = server.getInputStream(); InputStream in = new DataInputStream(new BufferedInputStream(netIn)); //创建缓冲区缓冲网络数据 byte[] buf = new byte[2048]; int num = in.read(buf); while (num != (-1)) {//是否读完所有数据 raf.write(buf, 0, num);//将数据写往文件 raf.skipBytes(num);//顺序写文件字节 num = in.read(buf);//继续从网络中读取文件 } in.close(); raf.close(); } } //FileServer.java import java.io.*; import java.util.*; import java.net.*; public class FileServer { public static void main(String[] args) throws Exception { //创建文件流用来读取文件中的数据 File file = new File("d:\系统特点.doc"); FileInputStream fos = new FileInputStream(file); //创建网络服务器接受客户请求 ServerSocket ss = new ServerSocket(8801); Socket client = ss.accept(); //创建网络输出流并提供数据包装器 OutputStream netOut = client.getOutputStream(); OutputStream doc = new DataOutputStream( new BufferedOutputStream(netOut)); //创建文件读取缓冲区 byte[] buf = new byte[2048]; int num = fos.read(buf); while (num != (-1)) {//是否读完文件 doc.write(buf, 0, num);//把文件数据写出网络缓冲区 doc.flush();//刷新缓冲区把数据写往客户端 num = fos.read(buf);//继续从文件中读取数据 } fos.close(); doc.close(); } } */ 9.发送邮件 /* import java.applet.*; import java.awt.*; import java.io.*; import java.net.*; */ public class WebSendMail extends Applet{ // 初始化界面 public void init(){ String s = getParameter("BgColor"); if(s == null) s = "0,0,0"; bgcolor = param.decodeColor(s); String s1 = getParameter("FgColor"); if(s1 == null) s1 = "255,255,255"; fgcolor = param.decodeColor(s1); in_mailto = getParameter("MailTo"); if(in_mailto == null) in_mailto = ""; in_website = getParameter("Website"); if(in_website == null) in_website = ""; d = size(); SuperCedeInit(); } public void sendMsg() { // 处理消息发送 try { button_Send.disable(); button_Clear.disable(); host = getCodeBase().getHost(); if(host.length() == 0) host = "localhost"; textArea_Log.appendText("Connecting. '" + host + "' "); Socket socket = new Socket(host, 25); textArea_Log.appendText("Connect OK '" + host + "' "); // 创建输入输出流 DataOutputStream dataoutputstream = new DataOutputStream(socket.getOutputStream()); DataInputStream datainputstream = new DataInputStream(socket.getInputStream()); textArea_Log.appendText("Send Start '" + textField_Subject.getText() + "' "); textArea_Log.appendText(datainputstream.readLine() + " "); dataoutputstream.writeBytes("HELO " + host + " "); textArea_Log.appendText(datainputstream.readLine() + " "); dataoutputstream.writeBytes("MAIL FROM: " + textField_From.getText() + " "); textArea_Log.appendText(datainputstream.readLine() + " "); dataoutputstream.writeBytes("RCPT TO: " + textField_To.getText() + " "); textArea_Log.appendText(datainputstream.readLine() + " "); dataoutputstream.writeBytes("DATA "); textArea_Log.appendText(datainputstream.readLine() + " "); dataoutputstream.writeBytes("X-Mailer: WebSendMail "); dataoutputstream.writeBytes("X-WebSite: " + in_website + " "); dataoutputstream.writeBytes("Subject: " + textField_Subject.getText() + " " + textArea_Msg.getText() + " "); dataoutputstream.writeBytes(". QUIT "); textArea_Log.appendText(datainputstream.readLine() + " ------------------------------ "); socket.close(); button_Send.enable(); button_Clear.enable(); button_Send.enable(); button_Clear.enable(); return; } catch(UnknownHostException _ex) { // 处理连接异常 textArea_Log.appendText("Connect Error '" + host + "' "); return; } catch(IOException _ex) { button_Send.enable(); } button_Clear.enable(); textArea_Log.appendText("Send Error '" + textField_Subject.getText() + "' "); } public void paint(Graphics g){} protected void Button_SendClicked(Event event) { // 处理发送按钮点击事件 if(textField_From.getText().length() == 0){ // 如果信件来源为空 textArea_Log.appendText("Input? 'From' "); return; } if(textField_To.getText().length() == 0) { // 如果信件目的地为空 textArea_Log.appendText("Input? 'To' "); return; } if(textField_Subject.getText().length() == 0){ // 如果信件主题为空 textArea_Log.appendText("Input? 'Subject' "); return; } if(textArea_Msg.getText().length() == 0) { // 如果信件内容为空 textArea_Log.appendText("Input? 'Message' "); return; } else { sendMsg(); return; } } protected void Button_ClearClicked(Event event) {// 清除按钮点击处理,清空所有已填内容 textField_Subject.setText(""); textField_From.setText(""); textField_To.setText(in_mailto); textArea_Msg.setText(""); } protected void Button_ClearLogClicked(Event event) { // 清空日志 textArea_Log.setText(""); } // 调用或重载超类相关方法实现初始化、开始、结束以及事件处理等 public boolean handleEvent(Event event) { return SuperCedeEvent(event); } public void start() { SuperCedeStart(); } public void stop() { SuperCedeStop(); } public String getAppletInfo() { return "WebSendMail"; } private final void SuperCedeInit() { // 详细的界面设置 setLayout(null); setForeground(fgcolor); setBackground(bgcolor); addNotify(); resize(d.width, d.height); label4 = new Label("From :", 2); label4.setForeground(fgcolor); add(label4); int i = insets().left; label4.reshape(i, insets().top, 50, 22); textField_From = new TextField(""); textField_From.setEditable(true); textField_From.setForeground(new Color(0, 0, 0)); textField_From.setBackground(new Color(255, 255, 255)); add(textField_From); int j = insets().left + 50; textField_From.reshape(j, insets().top, d.width - 50, 22); label3 = new Label("To :", 2); label3.setForeground(fgcolor); add(label3); int k = insets().left; label3.reshape(k, insets().top + 22, 50, 22); textField_To = new TextField(in_mailto); textField_To.setEditable(true); textField_To.setForeground(new Color(0, 0, 0)); textField_To.setBackground(new Color(255, 255, 255)); add(textField_To); int l = insets().left + 50; textField_To.reshape(l, insets().top + 22, d.width - 50, 22); label_Subject = new Label("Subject :", 2); label_Subject.setForeground(fgcolor); add(label_Subject); label_Subject.reshape(0, insets().top + 44, 50, 22); textField_Subject = new TextField(""); textField_Subject.setEditable(true); textField_Subject.setForeground(new Color(0, 0, 0)); textField_Subject.setBackground(new Color(255, 255, 255)); add(textField_Subject); int i1 = insets().left + 50; textField_Subject.reshape(i1, insets().top + 44, d.width - 50, 22); textArea_Msg = new TextArea(""); textArea_Msg.setEditable(true); textArea_Msg.setForeground(new Color(0, 0, 0)); textArea_Msg.setBackground(new Color(255, 255, 255)); add(textArea_Msg); textArea_Msg.reshape(0, insets().top + 66, d.width, d.height - 170); textArea_Log = new TextArea(""); textArea_Log.setEditable(true); textArea_Log.setForeground(new Color(0, 0, 0)); textArea_Log.setBackground(new Color(192, 192, 192)); add(textArea_Log); textArea_Log.reshape(0, d.height - 105, d.width, 80); button_Send = new Button("Send"); button_Send.setForeground(new Color(128, 0, 0)); button_Send.setBackground(new Color(192, 192, 192)); add(button_Send); button_Send.reshape(d.width / 2 - 105, d.height - 25, 70, 25); button_Clear = new Button("Clear"); button_Clear.setForeground(new Color(0, 128, 0)); button_Clear.setBackground(new Color(192, 192, 192)); add(button_Clear); button_Clear.reshape(d.width / 2 - 35, d.height - 25, 70, 25); button_ClearLog = new Button("Clear Log"); button_ClearLog.setForeground(new Color(0, 0, 128)); button_ClearLog.setBackground(new Color(192, 192, 192)); add(button_ClearLog); button_ClearLog.reshape(d.width / 2 + 35, d.height - 25, 70, 25); super.init(); } private final boolean SuperCedeEvent(Event event) { if(event.target == button_Send && event.id == 1001) { Button_SendClicked(event); return true; } if(event.target == button_Clear && event.id == 1001) { Button_ClearClicked(event); return true; } if(event.target != button_ClearLog || event.id != 1001) { return super.handleEvent(event); } else { Button_ClearLogClicked(event); return true; } } private final void SuperCedeStart(){} private final void SuperCedeStop() {} public WebSendMail() { // 发送邮件 param = new CommonApplet(); in_mailto = null; } // 成员变量 Color fgcolor; Color bgcolor; String host; Dimension d; CommonApplet param; String in_mailto; String in_website; Button button_Send; Label label_Subject; Label label3; TextField textField_Subject; TextField textField_From; TextField textField_To; TextArea textArea_Msg; Button button_Clear; Button button_ClearLog; Label label4; TextArea textArea_Log; } 10.接收邮件 //activation.jar // http://d.download.csdn.net/down/398258/dbhunter //mail.jar import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class PraseMimeMessage{ private MimeMessage mimeMessage = null; private String saveAttachPath = ""; //附件下载后的存放目录 private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象 private String dateformat = "yy-MM-dd HH:mm"; //默认的日前显示格式 /** * 构造函数,初始化一个MimeMessage对象 */ public PraseMimeMessage(){} public PraseMimeMessage(MimeMessage mimeMessage){ this.mimeMessage = mimeMessage; System.out.println("create a PraseMimeMessage object........"); } public void setMimeMessage(MimeMessage mimeMessage){ this.mimeMessage = mimeMessage; } /** * 获得发件人的地址和姓名 */ public String getFrom()throws Exception{ InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom(); String from = address[0].getAddress(); if(from == null) from=""; String personal = address[0].getPersonal(); if(personal == null) personal=""; String fromaddr = personal+"<"+from+">"; return fromaddr; } /** * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址 */ public String getMailAddress(String type)throws Exception{ String mailaddr = ""; String addtype = type.toUpperCase(); InternetAddress []address = null; if(addtype.equals("TO") || addtype.equals("CC") ||addtype.equals("BCC")){ if(addtype.equals("TO")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO); }else if(addtype.equals("CC")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC); }else{ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC); } if(address != null){ for(int i=0;i<address.length;i++){ String email=address[i].getAddress(); if(email==null) email=""; else{ email=MimeUtility.decodeText(email); } String personal=address[i].getPersonal(); if(personal==null) personal=""; else{ personal=MimeUtility.decodeText(personal); } String compositeto=personal+"<"+email+">"; mailaddr+=","+compositeto; } mailaddr=mailaddr.substring(1); } }else{ throw new Exception("Error emailaddr type!"); } return mailaddr; } /** * 获得邮件主题 */ public String getSubject()throws MessagingException{ String subject = ""; try{ subject = MimeUtility.decodeText(mimeMessage.getSubject()); if(subject == null) subject=""; }catch(Exception exce){ } return subject; } /** * 获得邮件发送日期 */ public String getSentDate()throws Exception{ Date sentdate = mimeMessage.getSentDate(); SimpleDateFormat format = new SimpleDateFormat(dateformat); return format.format(sentdate); } /** * 获得邮件正文内容 */ public String getBodyText(){ return bodytext.toString(); } /** * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 */ public void getMailContent(Part part)throws Exception{ String contenttype = part.getContentType(); int nameindex = contenttype.indexOf("name"); boolean conname =false; if(nameindex != -1) conname=true; System.out.println("CONTENTTYPE: "+contenttype); if(part.isMimeType("text/plain") && !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("text/html") && !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("multipart/*")){ Multipart multipart = (Multipart)part.getContent(); int counts = multipart.getCount(); for(int i=0;i<counts;i++){ getMailContent(multipart.getBodyPart(i)); } }else if(part.isMimeType("message/rfc822")){ getMailContent((Part)part.getContent()); }else{} } /** * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" */ public boolean getReplySign()throws MessagingException{ boolean replysign = false; String needreply[] = mimeMessage.getHeader("Disposition-Notification-To"); if(needreply != null){ replysign = true; } return replysign; } /** * 获得此邮件的Message-ID */ public String getMessageId()throws MessagingException{ return mimeMessage.getMessageID(); } /** * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】 */ public boolean isNew()throws MessagingException{ boolean isnew = false; Flags flags = ((Message)mimeMessage).getFlags(); Flags.Flag []flag = flags.getSystemFlags(); System.out.println("flags's length: "+flag.length); for(int i=0;i<flag.length;i++){ if(flag[i] == Flags.Flag.SEEN){ isnew=true; System.out.println("seen Message......."); break; } } return isnew; } /** * 判断此邮件是否包含附件 */ public boolean isContainAttach(Part part)throws Exception{ boolean attachflag = false; String contentType = part.getContentType(); if(part.isMimeType("multipart/*")){ Multipart mp = (Multipart)part.getContent(); for(int i=0;i<mp.getCount();i++){ BodyPart mpart = mp.getBodyPart(i); String disposition = mpart.getDisposition(); if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))) attachflag = true; else if(mpart.isMimeType("multipart/*")){ attachflag = isContainAttach((Part)mpart); }else{ String contype = mpart.getContentType(); if(contype.toLowerCase().indexOf("application") != -1) attachflag=true; if(contype.toLowerCase().indexOf("name") != -1) attachflag=true; } } }else if(part.isMimeType("message/rfc822")){ attachflag = isContainAttach((Part)part.getContent()); } return attachflag; } /** * 【保存附件】 */ public void saveAttachMent(Part part)throws Exception{ String fileName = ""; if(part.isMimeType("multipart/*")){ Multipart mp = (Multipart)part.getContent(); for(int i=0;i<mp.getCount();i++){ BodyPart mpart = mp.getBodyPart(i); String disposition = mpart.getDisposition(); if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){ fileName = mpart.getFileName(); if(fileName.toLowerCase().indexOf("gb2312") != -1){ fileName = MimeUtility.decodeText(fileName); } saveFile(fileName,mpart.getInputStream()); }else if(mpart.isMimeType("multipart/*")){ saveAttachMent(mpart); }else{ fileName = mpart.getFileName(); if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)){ fileName=MimeUtility.decodeText(fileName); saveFile(fileName,mpart.getInputStream()); } } } }else if(part.isMimeType("message/rfc822")){ saveAttachMent((Part)part.getContent()); } } /** * 【设置附件存放路径】 */ public void setAttachPath(String attachpath){ this.saveAttachPath = attachpath; } /** * 【设置日期显示格式】 */ public void setDateFormat(String format)throws Exception{ this.dateformat = format; } /** * 【获得附件存放路径】 */ public String getAttachPath(){ return saveAttachPath; } /** * 【真正的保存附件到指定目录里】 */ private void saveFile(String fileName,InputStream in)throws Exception{ String osName = System.getProperty("os.name"); String storedir = getAttachPath(); String separator = ""; if(osName == null) osName=""; if(osName.toLowerCase().indexOf("win") != -1){ separator = "\" if(storedir == null || storedir.equals("")) storedir="c:\tmp"; }else{ separator = "/"; storedir = "/tmp"; } File storefile = new File(storedir+separator+fileName); System.out.println("storefile's path: "+storefile.toString()); //for(int i=0;storefile.exists();i++){ //storefile = new File(storedir+separator+fileName+i); //} BufferedOutputStream bos = null; BufferedInputStream bis = null; try{ bos = new BufferedOutputStream(new FileOutputStream(storefile)); bis = new BufferedInputStream(in); int c; while((c=bis.read()) != -1){ bos.write(c); bos.flush(); } }catch(Exception exception){ exception.printStackTrace(); throw new Exception("文件保存失败!"); }finally{ bos.close(); bis.close(); } } /** * PraseMimeMessage类测试 */ public static void main(String args[])throws Exception{ String host = "主机名/ip"; //【pop.mail.yahoo.com.cn】 String username ="用户名"; //【wwp_1124】 String password ="密码"; //【........】 Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("pop3"); store.connect(host, username, password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message message[] = folder.getMessages(); System.out.println("Messages's length: "+message.length); PraseMimeMessage pmm = null; for(int i=0;i<message.length;i++){ pmm = new PraseMimeMessage((MimeMessage)message[i]); System.out.println("Message "+i+" subject: "+pmm.getSubject()); System.out.println("Message "+i+" sentdate: "+pmm.getSentDate()); System.out.println("Message "+i+" replysign: "+pmm.getReplySign()); System.out.println("Message "+i+" hasRead: "+pmm.isNew()); System.out.println("Message "+i+" containAttachment: "+pmm.isContainAttach((Part)message[i])); System.out.println("Message "+i+" form: "+pmm.getFrom()); System.out.println("Message "+i+" to: "+pmm.getMailAddress("to")); System.out.println("Message "+i+" cc: "+pmm.getMailAddress("cc")); System.out.println("Message "+i+" bcc: "+pmm.getMailAddress("bcc")); pmm.setDateFormat("yy年MM月dd日 HH:mm"); System.out.println("Message "+i+" sentdate: "+pmm.getSentDate()); System.out.println("Message "+i+" Message-ID: "+pmm.getMessageId()); pmm.getMailContent((Part)message[i]); System.out.println("Message "+i+" bodycontent: "+pmm.getBodyText()); pmm.setAttachPath("c:\tmp\coffeecat1124"); pmm.saveAttachMent((Part)message[i]); } } } 11.多线程阻塞通信 12.多线程非阻塞通信 13.多线程文件断点续传 14.多线程多文件断点续传 15.截取屏幕 import java.awt.*; import java.awt.image.*; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; import java.sql.*; /** *//******************************************************************* * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照" * This JavaBean is used to snapshot the GUI in a * Java application! You can embeded * it in to your java application source code, and us * it to snapshot the right GUI of the application * @see javax.ImageIO * @author liluqun ([email]liluqun@263.net[/email]) * @version 1.0 * *****************************************************/ public class GuiCamera ...{ private String fileName; //文件的前缀 private String defaultName = "GuiCamera"; static int serialNum = 0; private String imageFormat; //图像文件的格式 private String defaultImageFormat = "jpg"; Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); /** *//**************************************************************** * 默认的文件前缀为GuiCamera,文件格式为PNG格式 * The default construct will use the default * Image file surname "GuiCamera", * and default image format "png" ****************************************************************/ public GuiCamera() ...{ fileName = defaultName; imageFormat = defaultImageFormat; } /** *//**************************************************************** * @param s the surname of the snapshot file * @param format the format of the image file, * it can be "jpg" or "png" * 本构造支持JPG和PNG文件的存储 ****************************************************************/ public GuiCamera(String s, String format) ...{ fileName = s; imageFormat = format; } /** *//**************************************************************** * 对屏幕进行拍照 * snapShot the Gui once ****************************************************************/ public void snapShot() ...{ try ...{ //拷贝屏幕到一个BufferedImage对象screenshot BufferedImage screenshot = (new Robot()) .createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())); serialNum++; //根据文件前缀变量和文件格式变量,自动生成文件名 String name = fileName + String.valueOf(serialNum) + "." + imageFormat; File f = new File(name); System.out.print("Save File " + name); //将screenshot对象写入图像文件 ImageIO.write(screenshot, imageFormat, f); System.out.print("..Finished! "); } catch (Exception ex) ...{ System.out.println(ex); } } public static void main(String[] args) ...{ System.out.print("打开连接"); GuiCamera cam = new GuiCamera("d:Hello", "jpg");// cam.snapShot(); } } 16.聊天室服务器端逻辑 //Debug.java import java.util.*; public class Debug { public static String p(String s) { System.out.println(s); return s; } public static Object p(Object O) { System.out.println(O.toString()); return O; } public static Object[] p(Object[] O) { System.out.print("["); String s = ""; for (Object o : O) { System.out.print(s); System.out.print(o.toString()); s = ","; } System.out.println("]"); return O; } public static boolean p(boolean b) { System.out.println(b); return b; } public static int p(int i) { System.out.println(i); return i; } public static long p(long i) { System.out.println(i); return i; } @SuppressWarnings("unchecked") public static Map.Entry p(Map.Entry l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static HashSet p(HashSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static HashMap p(HashMap l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static Map p(Map l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static LinkedHashSet p(LinkedHashSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static TreeSet p(TreeSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static Set p(Set l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static ArrayList p(ArrayList l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static LinkedList p(LinkedList l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static List p(List l) { System.out.println(l); return l; } } //Service.java import java.io.*; import java.net.*; import java.util.*; public class Service extends Thread{ private Socket client=null; private Server server=null; public Service(Server server,Socket client){ this.server=server; this.client=client; } public void run(){ try { BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream())); while(true){ String str=br.readLine(); List<Socket> li=server.getLi(); for(Socket c:li){ if(!c.isClosed() && c.isConnected()){ OutputStream os=c.getOutputStream(); os.write((str+" ").getBytes()); }else{ client.close(); server.getLi().remove(client); break; } } } }catch (IOException e) { e.printStackTrace(); } } } //Server.java import java.util.*; import java.io.*; import java.net.*; public class Server { private List<Socket> li=new ArrayList<Socket>(); private ServerSocket ss=null; public List<Socket> getLi(){ return li; } public Server(int port){ try { ss=new ServerSocket(port); } catch (IOException e) { e.printStackTrace(); } } public void start(){ while(true){ Socket s; try { s = ss.accept(); li.add(s); new Service(this,s).start(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { new Server(8888).start(); } } 17.聊天室客户端逻辑 //Debug.java import java.util.*; public class Debug { public static String p(String s) { System.out.println(s); return s; } public static Object p(Object O) { System.out.println(O.toString()); return O; } public static Object[] p(Object[] O) { System.out.print("["); String s = ""; for (Object o : O) { System.out.print(s); System.out.print(o.toString()); s = ","; } System.out.println("]"); return O; } public static boolean p(boolean b) { System.out.println(b); return b; } public static int p(int i) { System.out.println(i); return i; } public static long p(long i) { System.out.println(i); return i; } @SuppressWarnings("unchecked") public static Map.Entry p(Map.Entry l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static HashSet p(HashSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static HashMap p(HashMap l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static Map p(Map l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static LinkedHashSet p(LinkedHashSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static TreeSet p(TreeSet l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static Set p(Set l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static ArrayList p(ArrayList l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static LinkedList p(LinkedList l) { System.out.println(l); return l; } @SuppressWarnings("unchecked") public static List p(List l) { System.out.println(l); return l; } } //GetMessage.java import javax.swing.*; import java.io.*; import java.net.*; public class GetMessage extends Thread{ private JTextArea context=null; private Socket s=null; public GetMessage(JTextArea context,Socket s){ this.context=context; this.s=s; } public void run(){ try { BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); while(true){ String str=br.readLine(); String c=context.getText(); context.setText(c+" "+str); } } catch (IOException e) { e.printStackTrace(); } } } //Client.java package t3; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class Client extends JFrame { private static final long serialVersionUID = 1L; private String ip = ""; private int port = 0; public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } private Socket s = null; private JTextArea context = new JTextArea(10, 10); JScrollPane sp = new JScrollPane(context); private JTextField say = new JTextField(10); private Container c; public Client() { c = this.getContentPane(); c.setLayout(new BorderLayout()); context.setEditable(false); c.add(sp); JPanel p = new JPanel(); p.add(BorderLayout.CENTER, say); c.add(BorderLayout.SOUTH, p); try { s = new Socket(this.ip, this.port); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } say.addActionListener(new ActionListener() { private void send(String str) { try { OutputStream os = s.getOutputStream(); os.write(str.getBytes()); } catch (IOException e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent arg0) { String str = say.getText(); send(str + " "); say.setText(""); } }); new GetMessage(context, s).start(); this.setSize(300, 300); this.setVisible(true); this.setResizable(false); } public Client(String ip, int port) { c = this.getContentPane(); c.setLayout(new BorderLayout()); context.setEditable(false); c.add(sp); JPanel p = new JPanel(); p.add(BorderLayout.CENTER, say); c.add(BorderLayout.SOUTH, p); try { s = new Socket(ip, port); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } say.addActionListener(new ActionListener() { private void send(String str) { try { OutputStream os = s.getOutputStream(); os.write(str.getBytes()); } catch (IOException e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent arg0) { String str = say.getText(); send(str + " "); say.setText(""); } }); new GetMessage(context, s).start(); this.setSize(300, 300); this.setVisible(true); this.setResizable(false); } public static void main(String[] args) { String strIP = null; try { strIP = InetAddress.getLocalHost().getHostAddress().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } new Client(strIP, 8888); // "127.0.0.1" } } 18.克隆对象 class Student implements Cloneable{ String name; int age; protected Object clone() throws CloneNotSupportedException { return super.clone(); } public boolean equals(Object s) { Student s1=(Student)s; if(this.name.equals(s1.name)&&this.age==s1.age) return true; else return false; } public Student() {} public Student(String name, int age) { this.name = name; this.age = age; } } //throws CloneNotSupportedException { Student s1=new Student("张三",20); Student s2=(Student)s1.clone(); if(s1==s2){ System.out.println("s1 and s2 are same object!"); }else{ System.out.println("s1 and s2 are NOT same object!"); } if(s1.equals(s2)){ System.out.println("s1 and s2 are equals!"); }else{ System.out.println("s1 and s2 are NOT equals!"); } 19.XML属性文件解析 /* import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; throws ParserConfigurationException, SAXException, IOException { */ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); Document doc=db.parse(%%1); //"mybook.xml" doc.normalize(); NodeList nl=doc.getElementsByTagName("book"); for(int i=0;i<nl.getLength();i++){ Element e=(Element)nl.item(i); String title=e.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); String author=e.getElementsByTagName("author").item(0).getFirstChild().getNodeValue(); String price=e.getElementsByTagName("price").item(0).getFirstChild().getNodeValue(); System.out.println("title:"+title); System.out.println("author:"+author); System.out.println("price:"+price); } <!-- 读取XML配置文件 /* import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; */ try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db; db = dbf.newDocumentBuilder(); Document doc; doc = db.parse("config.xml"); doc.normalize(); NodeList nl = doc.getElementsByTagName("book"); for (int i = 0; i < nl.getLength(); i++) { Element e = (Element) nl.item(i); String strurl = e.getElementsByTagName("dbsource").item(0) .getFirstChild().getNodeValue(); String username; if (e.getElementsByTagName("username").item(0).getFirstChild() == null) { username = ""; } else { username = e.getElementsByTagName("username").item(0) .getFirstChild().getNodeValue(); } String password; if (e.getElementsByTagName("username").item(0).getFirstChild() == null) { password = ""; } else { password = e.getElementsByTagName("password").item(0) .getFirstChild().getNodeValue(); } // strurl // username // password } } catch (ParserConfigurationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (SAXException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (IOException e3) { // TODO Auto-generated catch block e3.printStackTrace(); } --> 20.XML属性文件构造 /* import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; throws ParserConfigurationException, SAXException, IOException { */ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); Document doc=db.parse(%%1); //"mybook.xml" doc.normalize(); NodeList nl=doc.getElementsByTagName("book"); for(int i=0;i<nl.getLength();i++){ Element e=(Element)nl.item(i); String title=e.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); String author=e.getElementsByTagName("author").item(0).getFirstChild().getNodeValue(); String price=e.getElementsByTagName("price").item(0).getFirstChild().getNodeValue(); System.out.println("title:"+title); System.out.println("author:"+author); System.out.println("price:"+price); } 21.XML文件节点遍历操作 /* import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; */ private DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); private DocumentBuilder builder; private Document doc; private Element element; public Dead() { try { builder = factory.newDocumentBuilder(); doc = builder.parse("Produces.xml"); element = doc.getDocumentElement(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void findAll(NodeList lin) { for (int i = 0; i < lin.getLength(); i++) { Node node = lin.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { System.out.println(node.getNodeName()); if (!node.getFirstChild().getNodeValue().trim().equals("")) { System.out.println(node.getFirstChild().getNodeValue()); } } NamedNodeMap atts = node.getAttributes(); if (atts != null) { for (int j = 0; j < atts.getLength(); j++) { Node attNode = atts.item(j); if (attNode.getNodeType() == Node.ATTRIBUTE_NODE) { System.out.println(attNode.getNodeName() + ":" + attNode.getNodeValue());// 循环某个节点下的所有属性 } } } findAll(node.getChildNodes()); } } NodeList lin = element.getChildNodes(); this.findAll(lin); 22.XML文件节点遍历查找 /* import java.io.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; */ public class sax extends DefaultHandler{ String str; public sax() { super(); } public void startDocument() throws SAXException { System.out.println("商品列表"); } //名称空间,本地名称,标签名称(没有名空的话有值), public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { if(arg2.equals("product")){ System.out.println(arg3.getValue(0)); } } //遇到内容时触发 public void characters(char[] arg0, int arg1, int arg2) throws SAXException { str=new String(arg0,arg1,arg2); } //结束 public void endElement(String arg0, String arg1, String arg2) throws SAXException { if(arg2.equals("name")){ System.out.println("name:"+str); }else if(arg2.equals("authar")){ System.out.println("authar:"+str); }else if(arg2.equals("price")){ System.out.println("price:"+str); } } public static void main(String[] args) { SAXParserFactory factory=SAXParserFactory.newInstance(); try { javax.xml.parsers.SAXParser parser=factory.newSAXParser(); sax a3=new sax(); parser.parse(new InputSource(%%1),a3); //"bin/preducts.xml" } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 23.多线程端口监听 /* import java.io.*; import java.net.*; import java.util.regex.*; import com.sun.net.httpserver.*; import com.sun.net.httpserver.spi.*; */ public class HTTPDownloadService { /** * @param args * @throws IOException */1. public static void main(String[] args) throws IOException { HttpServerProvider httpServerProvider = HttpServerProvider.provider(); int port = 60080; if (args.length > 0) { try { port = Integer.parseInt(args[0]); } catch (Exception ex) {} } // 绑定端口1. InetSocketAddress addr = new InetSocketAddress(port); HttpServer httpServer = httpServerProvider.createHttpServer(addr, 1); httpServer.createContext("/", new HTTPDownloaderServiceHandler()); httpServer.setExecutor(null); httpServer.start(); System.out.println("started"); } } /** * 下载的服务器 * * @author 赵学庆 www.java2000.net */class HTTPDownloaderServiceHandler implements HttpHandler { private static Pattern p = Pattern.compile("\?page=(.*?)\&rpage=(.*?)&savepath=(.*)$"); public void handle(HttpExchange httpExchange) { try { Matcher m = p.matcher(httpExchange.getRequestURI().toString()); String response = "OK"; if (m.find()) { try { new HTTPDownloader(URLDecoder.decode(m.group(1), "GBK"), URLDecoder.decode(m.group(2), "GBK"), URLDecoder.decode(m.group(3), "GBK"), 10).start(); } catch (Exception e) { response = "ERROR -1"; e.printStackTrace(); } } else { response = "ERROR 1"; } httpExchange.sendResponseHeaders(200, response.getBytes().length); OutputStream out = httpExchange.getResponseBody(); out.write(response.getBytes()); out.close(); httpExchange.close(); } catch (Exception ex) { ex.printStackTrace(); } } } 24.多线程端口扫描 /* import java.io.*; import java.net.*; */ int Thread_Num=50; //设置默认线程数50 String host="localhost"; int minPort; int maxPort; int portNum; ScanPort sp[]=new ScanPort[Thread_Num]; minPort=Integer.parseInt(args[1]); maxPort=Integer.parseInt(args[2]); if(args.length == 3 && minPort<maxPort) { host=args[0]; minPort=Integer.parseInt(args[1]); maxPort=Integer.parseInt(args[2]); InetAddress thisComputer; byte[] address; //获取IP地址的字节 try { thisComputer=InetAddress.getByName(host); address=thisComputer.getAddress(); } catch(UnknownHostException e) { System.out.println("Cannot find host"+host); } } if (args.length == 4 && minPort<maxPort) { host=args[0]; minPort=Integer.parseInt(args[1]); maxPort=Integer.parseInt(args[2]); Thread_Num=Integer.parseInt(args[3]); //自定义线程数 InetAddress thisComputer; byte[] address; //获取IP地址的字节 try { thisComputer=InetAddress.getByName(host); address=thisComputer.getAddress(); } catch(UnknownHostException e) { System.out.println("Cannot find host"+host); } } //--- 计算待扫瞄端口量 ---// portNum=maxPort-minPort+1; if(portNum < Thread_Num) { //--- 如果端口数小于总线程 ---// for(int i=0; i<portNum; i++) { sp[i]=new ScanPort(host,minPort+i,minPort+i,i); sp[i].start(); } } else { int startPort = minPort, endPort = minPort; int A = portNum / Thread_Num ; int B = portNum % Thread_Num; for(int i=0; i<Thread_Num; i++) { if(B <= Thread_Num) { startPort = endPort; if ( i!= 0) { startPort += 1; endPort = startPort + A -1; } if ( i < B) endPort += 1; sp[i]=new ScanPort(host,startPort,endPort,i); sp[i].start(); } else { System.out.println("b大于50"); } } } try { loop: while(true) { for(int i=0; i<Thread_Num; i++) if(sp[i].isAlive()) continue loop; break; } } catch(NullPointerException e) { System.out.println(e.toString()); } class ScanPort extends Thread { //--- 分别定义目标,开始端口,结束端口,线程标记 ---// private String host; private int sPort; private int ePort; private int tag; private int i; //--- 构造函数(重新构造端口) ---// ScanPort(String h, int sP, int eP, int t) { super(); host=h; sPort=sP; ePort=eP; tag=t; } public void run() { //--- 测试端口是否打开 ---// for(i=sPort; i<=ePort; i++) { try { Socket s = new Socket(host, i); System.out.println("Host:"+host+" Port: "+i+" is Opening."+tag+"线程"); FileOutputStream out1=new FileOutputStream("C: eport.txt",true); BufferedOutputStream out2=new BufferedOutputStream(out1); DataOutputStream out=new DataOutputStream(out2); out.writeChars("Host:"+host+" Port:"+i+" is Opening."+tag+" Threads"+"n"); out.close(); Thread.yield(); } catch(IOException e) { System.out.println("Host:"+host+" Port: "+i+" is Closed."+tag+"线程"); } } } } 25.发送带附件的邮件 /* import java.io.*; import java.util.*; import javax.activation.*; import javax.mail.*; import javax.mail.internet.*; */ private MimeMessage mimeMsg; private Session session; private Properties props; private boolean needAuth; private String username; private String password; private Multipart mp; public SendAdditionMail() { needAuth = true; username = "ccue_yuanqichao"; password = "lianhuanccue"; setSmtpHost("smtp.sina.com.cn"); createMimeMessage(); } public SendAdditionMail(String smtp) { needAuth = true; username = "ccue_yuanqichao"; password = "lianhuanccue"; setSmtpHost(smtp); createMimeMessage(); } public void setSmtpHost(String hostName) { System.out.println("设置系统属性:mail.smtp.host = " + hostName); if (props == null) props = System.getProperties(); props.put("mail.smtp.host", hostName); } public boolean createMimeMessage() { try { System.out.println("准备获取邮件会话对象!"); session = Session.getDefaultInstance(props, null); } catch (Exception e) { System.err.println("获取邮件会话对象时发生错误!" + e); return false; } System.out.println("准备创建MIME邮件对象!"); try { mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); return true; } catch (Exception e) { System.err.println("创建MIME邮件对象失败!" + e); } return false; } public void setNeedAuth(boolean need) { System.out.println("设置smtp身份认证:mail.smtp.auth = " + need); if (props == null) props = System.getProperties(); if (need) props.put("mail.smtp.auth", "true"); else props.put("mail.smtp.auth", "false"); } public void setNamePass(String name, String pass) { username = name; password = pass; } public boolean setSubject(String mailSubject) { System.out.println("设置邮件主题!"); try { mimeMsg.setSubject(mailSubject); return true; } catch (Exception e) { System.err.println("设置邮件主题发生错误!"); } return false; } public boolean setBody(String mailBody) { try { BodyPart bp = new MimeBodyPart(); bp.setContent("" + mailBody, "text/html;charset=GB2312"); mp.addBodyPart(bp); return true; } catch (Exception e) { System.err.println("设置邮件正文时发生错误!" + e); } return false; } public boolean addFileAffix(String filename) { System.out.println("增加邮件附件:" + filename); try { BodyPart bp = new MimeBodyPart(); FileDataSource fileds = new FileDataSource(filename); bp.setDataHandler(new DataHandler(fileds)); bp.setFileName(fileds.getName()); mp.addBodyPart(bp); return true; } catch (Exception e) { System.err.println("增加邮件附件:" + filename + "发生错误!" + e); } return false; } public boolean setFrom(String from) { System.out.println("设置发信人!"); try { mimeMsg.setFrom(new InternetAddress(from)); return true; } catch (Exception e) { return false; } } public boolean setTo(String to) { if (to == null) return false; try { mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO, InternetAddress.parse(to)); return true; } catch (Exception e) { return false; } } public boolean setCopyTo(String copyto) { if (copyto == null) return false; try { mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC, InternetAddress.parse(copyto)); return true; } catch (Exception e) { return false; } } public boolean sendout() { try { mimeMsg.setContent(mp); mimeMsg.saveChanges(); System.out.println("正在发送邮件...."); Session mailSession = Session.getInstance(props, null); Transport transport = mailSession.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"), username, password); transport.sendMessage(mimeMsg, mimeMsg.getRecipients(javax.mail.Message.RecipientType.TO)); System.out.println("发送邮件成功!"); transport.close(); return true; } catch (Exception e) { System.err.println("邮件发送失败!" + e); } return false; } String mailbody = " java php asp.net编程欢迎您的加入! "; SendAdditionMail themail = new SendAdditionMail("smtp.sina.com.cn"); themail.setNeedAuth(true); if (!themail.setSubject("TEST")) return; StringUtil su = new StringUtil(); if (!themail.setBody(su.getUserEmailText("1", "test", "test"))) return; if (!themail.setTo("test@sina.com")) return; if (!themail.setFrom("ccue_yuanqichao@sina.com")) return; if (!themail.addFileAffix("E:\img\183977.jpg")) return; if (!themail.sendout()) return; else return; 26.接收带附件的邮件 /* import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; */ /** * @author Administrator * */ public class PraseMimeMessage{ private MimeMessage mimeMessage = null; private String saveAttachPath ="";//附件下载后的存放目录 private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象 private String dateformat = "yy-MM-dd HH:mm";//默认的日前显示格式 /** * 构造函数,初始化一个MimeMessage对象 */ public PraseMimeMessage(){} public PraseMimeMessage(MimeMessage mimeMessage){ this.mimeMessage = mimeMessage; System.out.println("create a PraseMimeMessage object........"); } public void setMimeMessage(MimeMessage mimeMessage){ this.mimeMessage=mimeMessage; } /** * * 获取发件人的姓名和密码 * @return */ public String getFrom()throws Exception{ InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom(); String from = address[0].getAddress(); if(from == null) from=""; String personal = address[0].getPersonal(); if(personal == null) personal=""; String fromaddr =personal+"<"+from+">"; return fromaddr; } /** * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同 * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址 */ public String getMailAddress(String type)throws Exception{ String mailaddr =""; String addtype = type.toUpperCase(); InternetAddress []address = null; if(addtype.equals("TO")|| addtype.equals("CC") ||addtype.equals("BCC")) {if(addtype.equals("TO")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO); }else if(addtype.equals("CC")){ address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC); }else{ address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC); } if(address!=null){ for(int i=0;i<address.length;i++){ String email=address[i].getAddress(); if(email==null) email=""; else{ email=MimeUtility.decodeText(email); } String personal=address[i].getPersonal(); if(personal==null) personal=""; else{ personal=MimeUtility.decodeText(personal); } String compositeto=personal+"<"+email+">"; mailaddr+=","+compositeto; } mailaddr=mailaddr.substring(1); } }else{ throw new Exception("Error emailaddr type!"); } return mailaddr; } /** * * 获取邮件主题 */ public String getSubject()throws MessagingException{ String subject = ""; try{ subject = MimeUtility.decodeText(mimeMessage.getSubject()); if(subject == null) subject=""; }catch(Exception exce){ } return subject; } /* * 获取邮件发送日期 * */ public String getSentDate()throws Exception{ Date sentdate = mimeMessage.getSentDate(); SimpleDateFormat format = new SimpleDateFormat(dateformat); return format.format(sentdate); } /** * 获取邮件正文 * @return * */ public String getBodyText(){ return bodytext.toString(); } /** * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件 * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析 * * */ public void getMailContent(Part part)throws Exception{ String contenttype = part.getContentType(); int nameindex = contenttype.indexOf("name"); boolean conname =false; if(nameindex !=-1) conname=true; System.out.println("CONTENTTYPE: "+contenttype); if(part.isMimeType("text/plain") && !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("text/html") && !conname){ bodytext.append((String)part.getContent()); }else if(part.isMimeType("multipart/*")){ Multipart multipart =(Multipart)part.getContent(); int counts = multipart.getCount(); for(int i=0;i<counts;i++){ getMailContent(multipart.getBodyPart(i)); } }else if(part.isMimeType("message/rfc822")){ getMailContent((Part)part.getContent()); }else{} } /** * * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" * */ public boolean getReplySign()throws MessagingException{ boolean replysign = false; String needreply[] = mimeMessage.getHeader("Disposition-Notification-To"); if(needreply != null){ replysign=true; } return replysign; } /* * 获得此邮件的Message-ID * */ public String getMessageId()throws MessagingException{ return mimeMessage.getMessageID(); } /* * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】 * */ public boolean isNew()throws MessagingException{ boolean isnew = false; Flags flags = ((Message)mimeMessage).getFlags(); Flags.Flag []flag = flags.getSystemFlags(); System.out.println("flags's length: "+flag.length); for(int i=0;i<flag.length;i++){ if(flag[i] == Flags.Flag.SEEN){ isnew=true; System.out.println("seen Message......."); break;} } return isnew; } /** * * 判断此邮件是否包含附件 * */ public boolean isContainAttach(Part part)throws Exception{ boolean attachflag = false; String contentType = part.getContentType(); if(part.isMimeType("multipart/*")){ Multipart mp = (Multipart)part.getContent(); for(int i=0;i<mp.getCount();i++){ BodyPart mpart = mp.getBodyPart(i); String disposition = mpart.getDisposition(); if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))) attachflag = true; else if(mpart.isMimeType("multipart/*")){ attachflag = isContainAttach((Part)mpart); }else{ String contype = mpart.getContentType(); if(contype.toLowerCase().indexOf("application")!= -1) attachflag=true; if(contype.toLowerCase().indexOf("name") != -1) attachflag=true; } } }else if(part.isMimeType("message/rfc822")){ attachflag = isContainAttach((Part)part.getContent()); } return attachflag; } /* * 保存附件 * */ public void saveAttachMent(Part part)throws Exception{ String fileName=""; if(part.isMimeType("multipart/*")){ Multipart mp=(Multipart)part.getContent(); for(int i=0;i<mp.getCount();i++){ BodyPart mpart =mp.getBodyPart(i); String disposition = mpart.getDisposition(); if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){ fileName = mpart.getFileName(); if(fileName.toLowerCase().indexOf("gb2312")!=-1){ fileName = MimeUtility.decodeText(fileName); } //saveFile(fileName,mpart.getInputStream()); saveFile(fileName,mpart.getInputStream()); }else if(mpart.isMimeType("multipart/*")){ saveAttachMent(mpart); }else{ fileName = mpart.getFileName(); if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") !=-1)){ fileName=MimeUtility.decodeText(fileName); saveFile(fileName,mpart.getInputStream()); } } } }else if(part.isMimeType("message/rfc822")){ saveAttachMent((Part)part.getContent()); } } /** * 【设置附件存放路径】 */ public void setAttachPath(String attachpath){ this.saveAttachPath = attachpath; } /** * * 设置日期显示本格式 */ public void setDateFormat(String format)throws Exception{ this.dateformat = format; } /** * 【获得附件存放路径】 */ public String getAttachPath(){ return saveAttachPath; } /** * 【真正的保存附件到指定目录里】 */ private void saveFile(String fileName,InputStream in)throws Exception{ String osName = System.getProperty("os.name"); String storedir = getAttachPath(); String separator = ""; if(osName == null) osName=""; if(osName.toLowerCase().indexOf("win") != -1){ separator="\"; if(storedir == null || storedir.equals("")) storedir="c:\tmp"; }else{ separator ="/"; storedir = "/tmp"; } File storefile = new File(storedir+separator+fileName); System.out.println("storefile's path: "+storefile.toString()); BufferedOutputStream bos = null; BufferedInputStream bis = null; try{ bos = new BufferedOutputStream(new FileOutputStream(storefile)); bis = new BufferedInputStream(in); int c; while((c=bis.read())!= -1){ bos.write(c); bos.flush(); } }catch(Exception exception){ exception.printStackTrace(); throw new Exception("文件保存失败!"); }finally{ bos.close(); bis.close(); } } /** * PraseMimeMessage类测试 */ public static void main(String args[])throws Exception{ String host = "POP3.163.com";//【POP3.163.com】 String username ="yuxia2217";//【yuxia2217】 String password ="*************";//【........】 Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("pop3"); store.connect(host,username, password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message message[]=folder.getMessages(); System.out.println("Messages's length: "+message.length); PraseMimeMessage pmm = null; for(int i=0;i<message.length;i++){ pmm = new PraseMimeMessage((MimeMessage)message[i]); System.out.println("Message "+i+" subject: "+pmm.getSubject()); System.out.println("Message "+i+" sentdate: "+pmm.getSentDate()); System.out.println("Message "+i+" replysign: "+pmm.getReplySign()); System.out.println("Message "+i+" hasRead: "+pmm.isNew()); System.out.println("Message "+i+" containAttachment: "+pmm.isContainAttach((Part)message[i])); System.out.println("Message "+i+" form: "+pmm.getFrom()); System.out.println("Message "+i+" to: "+pmm.getMailAddress("to")); System.out.println("Message "+i+" cc: "+pmm.getMailAddress("cc")); System.out.println("Message "+i+" bcc: "+pmm.getMailAddress("bcc")); pmm.setDateFormat("yy年MM月dd日 HH:mm"); System.out.println("Message "+i+" sentdate: "+pmm.getSentDate()); System.out.println("Message "+i+" Message-ID: "+pmm.getMessageId()); pmm.getMailContent((Part)message[i]); System.out.println("Message "+i+" bodycontent: "+pmm.getBodyText()); pmm.setAttachPath("c:\tmp\coffeecat1124"); pmm.saveAttachMent((Part)message[i]); } } } 27.Ping //import java.net.*; String host = %%1; //"128.0.0.1" boolean %%2; try { %%2 = InetAddress.getByName(host).isReachable(4000);// 超时应该在4钞以上 } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 28.调用Web Service /* import org.apache.axis.client.*; */ /** * 远程调用web service 2008.09.04 * 需要添加axis.jar,axis-ant.jar,axis-schema.jar,commons-discovery.jar包 * @author Rascal_hu http://hi.baidu.com/rascal_hu */ public String getMessage(){ String msg=""; try{ //设置远程地址 String URL="http://192.168.0.168:3219/WebService/services/Hello"; Service service=new Service(); Call call=(Call)service.createCall(); call.setTargetEndpointAddress(new java.net.URL(URL)); //设置远程方法 call.setOperationName("example"); msg=(String)call.invoke(new Object[]{"Jesun"});//远程方法返回值为String //如果远程方法需要接受参数.则上面的写法为:(String)call.invoke(new Object[]{参数1,参数2,..}); //如果远程方法不需要接受参数,则写为:(String)call.invoke(new Object[]{}); }catch(Exception e){ e.printStackTrace(); System.out.println("远程调用webservice失败!"); } return msg; } CallWebService callWeb=new CallWebService(); String msg=callWeb.getMessage(); System.out.println(msg); 29.HTTP代理服务器 /* import java.net.*; import java.io.*; */ HttpClient httpClient = new HttpClient(); // 设置代理服务器的ip地址和端口 // httpClient.getHostConfiguration().setProxy("127.0.0.1", 8888); // // 使用抢先认证 // httpClient.getParams().setAuthenticationPreemptive(true); GetMethod method = new GetMethod("http://www.javaeye.com/topic/154258"); HostConfiguration config = httpClient.getHostConfiguration(); config.setProxy("127.0.0.1", 8888); // method.addRequestHeader("Content-type", "text/xml; charset=utf-8"); try { int statusCode = httpClient.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + method.getStatusLine()); } String resultXml = method.getResponseBodyAsString(); System.out.println(resultXml); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 30.创建启动线程 public void myFunc() { %%1 } Thread myThread=new Thread(new ThreadStart(myFunc)); myThread.Start(); 31.线程挂起唤醒 myThread.Sleep(Infinite); myThread.Suspend(); 32.线程插入终止 myThread.Abort(); myThread.Join(); 33.HTTP多线程下载 /* import java.io.*; import java.net.*; */ /** * HTTP的多线程下载工具。 * * @author 赵学庆 www.java2000.net */1.public class HTTPDownloader extends Thread { // 要下载的页面1. private String page; // 保存的路径1. private String savePath; // 线程数1. private int threadNumber = 2; // 来源地址1. private String referer; // 最小的块尺寸。如果文件尺寸除以线程数小于这个,则会减少线程数。1. private int MIN_BLOCK = 10 * 1024; public static void main(String[] args) throws Exception { HTTPDownloader d = new HTTPDownloader("http://www.xxxx.net/xxxx.rar", "d://xxxx.rar", 10); d.down(); } public void run() { try { down(); } catch (Exception e) { e.printStackTrace(); } } /** * 下载操作 * * @throws Exception */1. public void down() throws Exception { URL url = new URL(page); // 创建URL1. URLConnection con = url.openConnection(); // 建立连接1. int contentLen = con.getContentLength(); // 获得资源长度1. if (contentLen / MIN_BLOCK + 1 < threadNumber) { threadNumber = contentLen / MIN_BLOCK + 1; // 调整下载线程数1. } if (threadNumber > 10) { threadNumber = 10; } int begin = 0; int step = contentLen / threadNumber; int end = 0; for (int i = 0; i < threadNumber; i++) { end += step; if (end > contentLen) { end = contentLen; } new HTTPDownloaderThread(this, i, begin, end).start(); begin = end; } } public HTTPDownloader() { } /** * 下载 * * @param page 被下载的页面 * @param savePath 保存的路径 */1. public HTTPDownloader(String page, String savePath) { this(page, savePath, 10); } /** * 下载 * * @param page 被下载的页面 * @param savePath 保存的路径 * @param threadNumber 线程数 */ public HTTPDownloader(String page, String savePath, int threadNumber) { this(page, page, savePath, 10); } /** * 下载 * * @param page 被下载的页面 * @param savePath 保存的路径 * @param threadNumber 线程数 * @param referer 来源 */ public HTTPDownloader(String page, String referer, String savePath, int threadNumber) { this.page = page; this.savePath = savePath; this.threadNumber = threadNumber; this.referer = referer; } public String getPage() { return page; } public void setPage(String page) { this.page = page; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public int getThreadNumber() { return threadNumber; } public void setThreadNumber(int threadNumber) { this.threadNumber = threadNumber; } public String getReferer() { return referer; } public void setReferer(String referer) { this.referer = referer; } } /** * 下载线程 * */1.class HTTPDownloaderThread extends Thread { HTTPDownloader manager; int startPos; int endPos; int id; int curPos; int BUFFER_SIZE = 4096; int readByte = 0; HTTPDownloaderThread(HTTPDownloader manager, int id, int startPos, int endPos) { this.id = id; this.manager = manager; this.startPos = startPos; this.endPos = endPos; } public void run() { // System.out.println("线程" + id + "启动");1. // 创建一个buff1. BufferedInputStream bis = null; RandomAccessFile fos = null; // 缓冲区大小1. byte[] buf = new byte[BUFFER_SIZE]; URLConnection con = null; try { File file = new File(manager.getSavePath()); // 创建RandomAccessFile1. fos = new RandomAccessFile(file, "rw"); // 从startPos开始1. fos.seek(startPos); // 创建连接,这里会为每个线程都创建一个连接1. URL url = new URL(manager.getPage()); con = url.openConnection(); con.setAllowUserInteraction(true); curPos = startPos; // 设置获取资源数据的范围,从startPos到endPos1. con.setRequestProperty("Range", "bytes=" + startPos + "-" + endPos); // 盗链解决1. con.setRequestProperty("referer", manager.getReferer() == null ? manager.getPage() : manager.getReferer()); con.setRequestProperty("userAgent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); // 下面一段向根据文件写入数据,curPos为当前写入的未知,这里会判断是否小于endPos,1. // 如果超过endPos就代表该线程已经执行完毕1. bis = new BufferedInputStream(con.getInputStream()); while (curPos < endPos) { int len = bis.read(buf, 0, BUFFER_SIZE); if (len == -1) { break; } fos.write(buf, 0, len); curPos = curPos + len; if (curPos > endPos) { . // 获取正确读取的字节数1. readByte += len - (curPos - endPos) + 1; } else { readByte += len; } } // System.out.println("线程" + id + "已经下载完毕:" + readByte);1. bis.close(); fos.close(); } catch (IOException ex) { ex.printStackTrace(); } } } 34.MP3播放 //必须下载 jmf包 //import javax.media.bean.playerbean.MediaPlayer; //必须下载 jmf 媒体播放包 MediaPlayer player; player = new MediaPlayer(); setLayout(new FlowLayout()); try{ player.setMediaLocation("file:/F:\音乐\mp3\黑白配.mp3");// <<file:/>>不能删除 音频文件路径 } catch (Exception e) { System.out.println("文件不存在"); } player.start(); player.stop(); 35.WAV播放 /* import javax.sound.sampled.*; import java.io.*; */ private AudioFormat format; private byte[] samples; private String filename; try { // open the audio input stream AudioInputStream stream =AudioSystem.getAudioInputStream(new File(filename)); format = stream.getFormat(); // get the audio samples samples = getSamples(stream); } catch (UnsupportedAudioFileException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } private byte[] getSamples(AudioInputStream audioStream) { // get the number of bytes to read int length = (int)(audioStream.getFrameLength() * format.getFrameSize()); // read the entire stream byte[] samples = new byte[length]; DataInputStream is = new DataInputStream(audioStream); try { is.readFully(samples); } catch (IOException ex) { ex.printStackTrace(); } // return the samples return samples; } public void play(InputStream source) { // use a short, 100ms (1/10th sec) buffer for real-time // change to the sound stream int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10); byte[] buffer = new byte[bufferSize]; // create a line to play to SourceDataLine line; try { DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); line = (SourceDataLine)AudioSystem.getLine(info); line.open(format, bufferSize); } catch (LineUnavailableException ex) { ex.printStackTrace(); return; } // start the line line.start(); // copy data to the line try { int numBytesRead = 0; while (numBytesRead != -1) { numBytesRead = source.read(buffer, 0, buffer.length); if (numBytesRead != -1) { line.write(buffer, 0, numBytesRead); } } } catch (IOException ex) { ex.printStackTrace(); } // wait until all data is played, then close the line line.drain(); line.close(); } throws Exception String filename=%%1; InputStream stream =new ByteArrayInputStream(sound.getSamples()); // play the sound sound.play(stream);