1、客户端:/* * 使用TCP协议写一个可以上传文件的服务器和客户端。 * * 客户端类 * * 运行完要F5刷新下项目 */ public class FTPClient { public static void main(String[] args) throws Exception { //链接服务器,127.0.0.1表示本机,5678为端口号。
2、Socket socket = new Socket("127.0.0.1", 5678); System.out.println("conneted s髫潋啜缅erver"); //需要上传的文件路径,这里是当前这个java源文件 String path = System.getProperty("user.dir")+File.separator+"src"+File.separator+"question10" +File.separator+"FTPClient.java";
3、//根据路径链接到本机文件系统 File file = new File(path); //取得到服务器的输出流,用来写入数据 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); System.out.println("start write"); writeHead(dos, file); writeFile(dos, file); System.out.println("write finished"); } /** * 写传输头,这里只是文件名字 */ public static void writeHead(DataOutputStream dos, File file) throws IOException { dos.writeUTF(file.getName()); dos.flush();
4、} /** * 读取文件并传输给服务器 */ public static void writeFile(DataOutputStream dos, File file) throws IOException { DataInputStream dis = new DataInputStream(new FileInputStream(file));
5、//超过两个G的文件会出问题,获取不到准确的大小 //并且dis.available() > 0表达式也不能正确 //工作 dos.writeInt(dis.available()); System.out.println("file size " + dis.available() + " bytes"); while(dis.available() > 0) { dos.write(dis.read()); } dos.flush(); } }
6、服务器:/* * 使用TCP协议写一个可以上传文件的服务器和客户端。 * * 服务器类 * * 老师运行完要F5刷新下项目 */ public class FTPServer { public static void main(String[] args) throws Exception { //启动服务器,并监听5678端口的链接请求 ServerSocket ss = new ServerSocket(5678); Socket client = ss.accept();