TCP通信_接收端数据写入文本文件
要求如下 客户端:数据来自于键盘录入,直到输入的数据是end,则发送端停止运行 服务器:接收到的数据写入文本文件
TCP通信_接收端数据写入文本文件的练习
xxxxxxxxxxpackage ch22;
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;
//如何运行:先运行"a_12_2测试_接收"再运行"a_12_1测试_发送"。控制台键盘发送数据,结果在"a_13_3文本"里接收//这里的代码是从"a_12_1测试_发送"里复制过来的public class a_13_1测试_发送 {
public static void main(String[] args) throws IOException {
//创建发送端Socket对象 Socket s = new Socket("10.99.20.3",11113);
//数据来自键盘录入,直到输入的数据是end,则发送端停止运行 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//封装输出流对象。把拿到的s.getOutputStream()字节输出流,转换为OutputStreamWriter字符输出流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line; while((line=br.readLine())!=null){ if("end".equals(line)){ break; }
//如果不是输入end的话,就把输入的数据都发送出去。获取输出流对象 /*OutputStream os = s.getOutputStream(); os.write(line.getBytes());//以字节数组的形式来写数据。如何一次写一个字符串,如下。别忘了把上面两行都注释掉*/
//如果不是输入end的话,就把输入的数据都发送出去。获取输出流对象。注意我们拿到的s.getOutputStream是字节流,我们需要把它转为字符流 //还要在最上面封装输出流对象 bw.write(line); bw.newLine();//换行 bw.flush();//刷新缓冲流 }
//释放资源 s.close();
}}xxxxxxxxxxpackage ch22;
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;
//如何运行:先运行"a_12_2测试_接收"再运行"a_12_1测试_发送"。控制台键盘发送数据,结果在"a_13_3文本"里接收public class a_13_2测试_接收 {
public static void main(String[] args) throws IOException {
//创建接收端Socket对象 ServerSocket ss = new ServerSocket(11113);
//监听发送端的连接,返回一个对应的Socket对象 Socket s = ss.accept();
//接收数据 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //用FileWriter来实现把数据写到文本文件,即需要把FileWriter包装成BufferWriter BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\huanf\\java\\src\\ch22\\a_13_3文本.txt"));//目标路径
//读写操作 String line; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); }
//释放资源 bw.close(); ss.close(); //注意ss和bw都需要释放资源
}}