网络编程_TCP上传文本文件并给出反馈

来源:互联网 发布:淘宝城 上海 编辑:程序博客网 时间:2024/05/22 04:56
package cn.itcast_12;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;/* * 服务器输出文本文件 */public class UploadServer {public static void main(String[] args) throws IOException {// 创建服务器Socket对象ServerSocket ss = new ServerSocket(11111);// 监听客户端链接Socket s = ss.accept();// 封装通道内流BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));// 封装文本文件BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));String line = null;while ((line = br.readLine()) != null) {// if ("over".equals(line)) {// break;// }bw.write(line);bw.newLine();bw.flush();}// 给出反馈BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));bwServer.write("文件上传成功");bwServer.newLine();bwServer.flush();// 释放资源bw.close();s.close();}}


package cn.itcast_12;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;/* * 按照我们正常的思路加入反馈信息,结果却没反应。为什么呢? * 读取文本文件是可以null作为结束信息的,但是呢,通道内是不能这样结束信息的。 * 把以,报务器根本就不知道你结束了。而你还想服务器给你馈。所以,就相互等待了。 *  * 如何解决呢? * A:在多写一条数据,告诉服务器,读取到这条数据说明我就结束,你也结束吧。 * 这样做可以解决问题,但是不好 * B:Socket对象提供了一种解决方案 * public void shutdownOutput():禁用此套接字的输出流。 */public class UploadClient {public static void main(String[] args) throws IOException {// 创建客户端Socket对象Socket s = new Socket("192.168.31.165", 11111);// 封装文本文件BufferedReader br = new BufferedReader(new FileReader("InetAddressDemo.java"));// 封装通道内流BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line = null;while ((line = br.readLine()) != null) {bw.write(line);bw.newLine();bw.flush();}// 自定义结束标记// bw.write("over");// bw.newLine();// bw.flush();// Socket提供了一个终止,它会通知服务器你别等了,我没有数据过来了s.shutdownOutput();// 接收反馈BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));String client = brClient.readLine();System.out.println(client);// 释放资源br.close();s.close();}}


0 0
原创粉丝点击