总结下前些时候的那个项目(Java+vb.net) (一)

2014-11-24 07:25:33 · 作者: · 浏览: 0

去年的时候 从刚到南京就开始做这个对账项目:
业务过程不方便说了,牵扯到的技术问题有以下几个:
1、java的socket传输
2、java的ftp主动方式传输
3、第三方提供的一个dll 做CA签名用的
4、java操作文件
5、java解析xml字符串
5、java更新数据库
=================================
主要就是以上的几个问题,因为刚参加工作不久,所以在经验上比较匮乏,走了不少的弯路,现在想想,很多简单的问题,
当时怎么就想的那么复杂呢!!!
反思反思!!!
=================================
首先,socket传输,这部分比较简单,只不过服务器端不是我写的,而且在socket的发送和接收的时候都需要进行一个简单的压缩加密、解密。所以,在传输的时候用简单的Buffer就不行了。
这一部分可以参见:
http://www.2cto.com/kf/201203/121864.html
http://www.2cto.com/kf/201203/121865.html
这两篇文章 。。。
=================================
接下来说ftp传输,本来在最开始的时候 使用的一直以来一个比较成熟的FTP传输工具,但是在实际使用的时候发现这个工具不可以使用。后来才了解到ftp服务器的访问方式是主动方式。
后来使用了一个开源库:edtftpj
使用这个就比较方便了,比我自己写的好用太多了。
下面是FTP部分的代码:
1 /*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5 package test;
6
7 import com.enterprisedt.net.ftp.FTPClient;
8 import com.enterprisedt.net.ftp.FTPConnectMode;
9 import com.enterprisedt.net.ftp.FTPMessageCollector;
10 import com.enterprisedt.net.ftp.FTPTransferType;
11 import com.enterprisedt.util.debug.Logger;
12 import java.io.File;
13 import java.io.FileInputStream;
14 import java.io.FileOutputStream;
15 import java.net.URL;
16
17 /**
18 *
19 * @author Icer
20 */
21 public class FtpClient {
22
23 private FTPClient ftp = null;
24
25 public FTPClient connFtpServer(String host, int port, String username, String password) {
26 ftp = new FTPClient();
27 try {
28

29 ftp.setRemoteHost(host);
30 ftp.setRemotePort(port);
31 FTPMessageCollector listener = new FTPMessageCollector();
32 ftp.setMessageListener(listener);
33
34 System.out.println("Connecting");
35 ftp.connect();
36
37 System.out.println("Logging in");
38 ftp.login(username, password);
39
40 System.out.println("Setting up passive,ASCII transfers");
41 ftp.setConnectMode(FTPConnectMode.PASV);
42 ftp.setType(FTPTransferType.ASCII);
43
44 } catch (Exception e) {
45 e.printStackTrace();
46 }
47 return ftp;
48 }
49
50 public void upload(String localfile, URL url) {
51 String host = url.getHost();
52 int port = url.getPort();
53 File filePath = new File(url.getPath());
54 String directory = filePath.getParent().substring(1);
55 String filename = filePath.getName();
56 try {
57 ftp.chdir(directory);
58 ftp.put(new FileInputStream(localfile), filename);
59 } catch (Exception e) {
60 e.printStackTrace();
61 System.out.println("upload failed");
62 }
63 }
64
65
66 public void upload(String localpath, String filename) {
67 try {
68 if(ftp.connected()){
69
70 ftp.put(localpath, filename);
71 ftp.dir();
72
73 System.out.println("hello");
74 } else {
75 System.out.println("wrong");
76 }
77
78 } catch (Exception e) {
79 System.ou