TCP、UDP编程练习
TCP
☆上传文本文件
读取一个本地文本文件,将数据发送到服务端,服务器端对数据进行存储。 存储完毕后,给客户端一个提示。
一、解题思路
客户端:(1) 创建Socket对象----用服务器的ip+端口号
(2)读取文件内容
(3)通过socket把内容发送给服务器端(把socket中的输出流包装成“打印流”来进行发送文本,是一种比较安全的输出方式,不会出现失真。)
服务器端:(1) 创建服务器socket---ServerSocket
(2)通过ServerSocket获得客户端的socket
(3)通过客户端的socket,读取对方发来的数据,并把这些数据写到一个新建文件当中
二、注解和实现代码
UploadTextClient.java类
package net.tcp.textFileUpload;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class UploadTextClient {
public static void main(String[] args) {
try {
//1 创建Socket对象----用服务器的ip+端口号
Socket s = new Socket("127.0.0.1", 10000);
//2 读取文件内容 //3 通过socket把内容发送给服务器端(把socket中的输出流包装成“打印流”来进行发送文本,是一种比较安全的输出方式,不会出现失真。)
BufferedReader bufr = new BufferedReader( new FileReader("tempFile\\client.txt") );
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
//发送
String line = null;
while((line=bufr.readLine())!=null){
out.println(line);
}
//6 给服务器发送一个结束标记
//out.println("%$#@88##K##");//发送自定义的结束标记
s.shutdownOutput();
//5 读取服务器端的反馈信息 s.getInputStream()
BufferedReader bufr2 = new BufferedReader( new InputStreamReader(s.getInputStream()) );
String text = bufr2.readLine();
System.out.println("server:"+text);
//4 关流
bufr.close();
out.close();