026.4 网络编程 上传文本

一般是已经封装好的jar包里面,这里通过原始步骤实现一下这个功能

##############################################################################
客户端步骤:
1、确定连接地址和端口
2、读取文件
3、获取socket输出流
4、发送
5、向服务器发送结束标记,让服务器结束读取动作
6、接收返回信息
7、关闭资源

###UploadTextClient.java

public class UploadTextClient {
    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        System.out.println("上传文件客户端运行......");
        // 客户端:
        // 步骤:
        // 1,创建socket,明确地址和端口。
        Socket s = new Socket("192.168.1.223", 10006);

        // 2,源:读取文本文件。获取需要转换的数据。
        BufferedReader bufr = new BufferedReader(new FileReader("tempfile\\client.txt"));
        
        // 3,目的:网络,socket输出流。将录入的数据发送到服务端。
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        
        // 4,频繁的读写操作。
        String line = null;
        while((line=bufr.readLine())!=null){
            out.println(line);
        }
        
        //给服务端发送一个结束标记。这个标记是约定标记。有点麻烦。可以更简单。使用socket对象的shutdownOutput();
        s.shutdownOutput();//向服务端发送了结束标记。可以让服务端结束读取的动作。
        
        // 5,源:socket,socket读取流,读取服务端发回来的上传成功信息。
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String info = bufIn.readLine();
        System.out.println(info);
        
        // 6,关闭资源。
        bufr.close();
        s.close();
    }

}

 

###########################################################################################
服务端步骤:
1、建立服务端socket
2、接收客户端socket
3、建立文件对象
4、多次接收,写入
5、返回接收完毕信息
6、关闭资源

###UploadTextServer.java

public class UploadTextServer {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {


        System.out.println("上传文本服务端运行....");
        // 服务端:
        // 思路:
        // 1,创建服务端socket 明确端口。
        ServerSocket ss = new ServerSocket(10006);
        while (true) {
            // 获取客户端对象。
            Socket s = ss.accept();
            System.out.println(s.getInetAddress().getHostAddress()+".....connected");

            // 2,源:socket输入流。读取客户端的发过来的数据。
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(
                    s.getInputStream()));

            // 3,目的:文件。
            PrintWriter pw = new PrintWriter(new FileWriter("tempfile\\server.txt"),true);

            // 4,频繁的读写操作。
            String line = null;
            while ((line = bufIn.readLine()) != null) {
//                if("over".equals(line)){
//                    break;
//                }
                pw.println(line);
            }
            
            // 5,发回给客户端上传成功字样。
            PrintWriter out = new PrintWriter(s.getOutputStream(),true);
            out.println("上传成功");
            
            // 6,关闭客户端。
            s.close();
        }
    }
}

 

posted @ 2018-10-13 15:30  Alos403  阅读(374)  评论(0编辑  收藏  举报