利用Socket serverSocket实现文件上传

来源:互联网 发布:人工智能观后感5中英文 编辑:程序博客网 时间:2024/05/29 01:53

客户端只用到Socket类

public class UploadTextClient {    public static void main(String[] args) throws IOException{        //1创建Socket        Socket s = new Socket("192.168.31.168", 10005);        //上传文件 ---发送        //源: 磁盘文件, FileReader        //目的: socket, s.getOutputStream()        //额外功能:BufferedReader, PrintWriter        BufferedReader br = new BufferedReader(new FileReader("files/a.txt"));        PrintWriter pw = new PrintWriter( s.getOutputStream(),true);        String str = null;        while( (str=br.readLine())!=null){            pw.println(str);        }        //★给服务器发送一个结束标记        s.shutdownOutput();        //接收服务器的应答消息        BufferedReader br2 = new BufferedReader( new InputStreamReader(s.getInputStream()) );        String info = br2.readLine();        System.out.println("server:"+info);        s.close();    }}

服务器端刚开始是用到ServerSocket, 再通过server.accept()拿到客户端的socket, 进而通过socket和客户端通讯

public class UploadTextServer {    public static void main(String[] args) throws IOException {        //1创建ServerSocket        ServerSocket server = new ServerSocket(10005);        //2获得握手方(客户端)对应的socket        Socket ss = server.accept();        //3读取客户端上传的文件数据----源:socket, 目的:本地磁盘        BufferedReader br = new BufferedReader(new InputStreamReader(ss.getInputStream()));        PrintWriter pw = new PrintWriter( new FileWriter("files\\abc.txt"),true);        String str=null;        while((str=br.readLine())!=null){            pw.println(str);        }        //4向客户端写应答消息        PrintWriter pw2 = new PrintWriter( ss.getOutputStream(),true);        pw2.println("上传成功!");        ss.close();        server.close();    }
0 0
原创粉丝点击