资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
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 java.net.ServerSocket;import java.net.Socket;public class ServerTest int port = 8821; void start() Socket s = null; try 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链接); DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream(); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath); DataOutputStream ps = new DataOutputStream(s.getOutputStream(); /将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工,具体可以参见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(); / 注意关闭socket链接哦,不然客户端会等待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 java.net.*;import java.io.*;public class ClientSocket private 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 Exception 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(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 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 shutDownConnection() 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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号