《JAVA在服务器端和客户端传输图片和文件》由会员分享,可在线阅读,更多相关《JAVA在服务器端和客户端传输图片和文件(7页珍藏版)》请在金锄头文库上搜索。
1、Java基于Socket文件传输示例1.服务器端package sterning;import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import .ServerSocket;import .Socket;public class ServerTest int port = 8821; void start() Socket s = null; try
2、 ServerSocket ss = new ServerSocket(port); while (true) / 选择进行传输的文件 String filePath = D:lib.rar; File fi = new File(filePath); System.out.println(文件长度: + (int) fi.length(); / public Socket accept() throws / IOException侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。 s = ss.accept(); System.out.println(建立socket链接); Dat
3、aInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream(); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath); DataOutputStream ps = new DataOutputStream(s.getOutputStream(); /将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工
4、,具体可以参见Think In Java 4th里有现成的代码。 ps.writeUTF(fi.getName(); ps.flush(); ps.writeLong(long) fi.length(); ps.flush(); int bufferSize = 8192; byte buf = new bytebufferSize; while (true) int read = 0; if (fis != null) read = fis.read(buf); if (read = -1) break; ps.write(buf, 0, read); ps.flush(); / 注意关闭s
5、ocket链接哦,不然客户端会等待server的数据过来, / 直到socket超时,导致数据不完整。 fis.close(); s.close(); System.out.println(文件传输完成); catch (Exception e) e.printStackTrace(); public static void main(String arg) new ServerTest().start(); 2.socket的Util辅助类package sterning;import .*;import java.io.*;public class ClientSocket private
6、 String ip; private int port; private Socket socket = null; DataOutputStream out = null; DataInputStream getMessageStream = null; public ClientSocket(String ip, int port) this.ip = ip; this.port = port; /* */* * 创建socket连接 * * throws Exception * exception */ public void CreateConnection() throws Exc
7、eption try socket = new Socket(ip, port); catch (Exception e) e.printStackTrace(); if (socket != null) socket.close(); throw e; finally public void sendMessage(String sendMessage) throws Exception try out = new DataOutputStream(socket.getOutputStream(); if (sendMessage.equals(Windows) out.writeByte(
8、0x1); out.flush(); return; if (sendMessage.equals(Unix) out.writeByte(0x2); out.flush(); return; if (sendMessage.equals(Linux) out.writeByte(0x3); out.flush(); else out.writeUTF(sendMessage); out.flush(); catch (Exception e) e.printStackTrace(); if (out != null) out.close(); throw e; finally public
9、DataInputStream getMessageStream() throws Exception try getMessageStream = new DataInputStream(new BufferedInputStream(socket.getInputStream(); return getMessageStream; catch (Exception e) e.printStackTrace(); if (getMessageStream != null) getMessageStream.close(); throw e; finally public void shutD
10、ownConnection() try if (out != null) out.close(); if (getMessageStream != null) getMessageStream.close(); if (socket != null) socket.close(); catch (Exception e) 3.客户端package sterning;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileOutputStream;public class ClientTest private ClientSocket cs = null; private String ip = localhost;/ 设置成服务器IP