TCP通信_接收端数据写入文本文件
要求如下 客户端:数据来自于键盘录入,直到输入的数据是end,则发送端停止运行 服务器:接收到的数据写入文本文件
TCP通信_接收端数据写入文本文件的练习
xxxxxxxxxx
package 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();
}
}
xxxxxxxxxx
package 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都需要释放资源
}
}