JavaSE_网络编程_TCP_练习2_文本文件

客户端代码:

import java.io.BufferedReader;
import java.io.File;
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 TCP_Client_Demo3 {
  public static void main(String[] args) throws UnknownHostException, IOException {
    /*方法说明:(缓冲区默认大小8K 8192字节,即使不flush满了也会自动刷到目的地)
     *模拟实现:上传文本文件!*/
    File file = new File("c:\\client.txt");
    //省略了健壮性判断
    Socket s = new Socket("127.0.0.1",10005);
    //关联源
    BufferedReader bufr =
        new BufferedReader(new FileReader(file));
    //关联目的  PrintWriter和true同在
    PrintWriter out = new PrintWriter(s.getOutputStream(),true);
    //一顿狂读
    String line = null;
    while((line=bufr.readLine())!=null){
      out.println(line);
    }
    //关键:告诉服务端,客户端写完了。不然服务端的while结束不了!
    s.shutdownOutput();//禁用此套接字的输出流,无返回值
//    out.println("!@#$%^&*");或者使用时间戳相对麻烦!
    //通过Socket输入流获取服务端返回的"上传成功"提示!
    BufferedReader bufIn = 
        new BufferedReader(new InputStreamReader(s.getInputStream()));
    String str = bufIn.readLine();
    System.out.println(str);
    bufr.close();
    s.close();
  }
}



服务端代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server_Demo3 {
  public static void main(String[] args) throws IOException {
    ServerSocket ss = new ServerSocket(10005);
    Socket s = ss.accept();
    System.out.println(s.getInetAddress().getHostAddress()+".....connected");
    //关联源
    BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
    //关联目的
    BufferedWriter bufw = new BufferedWriter(new FileWriter("c:\\server.txt"));
    //一顿狂写
    String line = null;
    while((line=bufIn.readLine())!=null){
      bufw.write(line);
      bufw.newLine();
      bufw.flush();
      //newLine与flush()同在!正如PrintWriter和true同在
    }
    //用Socket输出流,反馈信息给客户端!
    PrintWriter out = new PrintWriter(s.getOutputStream(),true);
    out.println("上传成功");
    bufw.close();
    s.close();
    ss.close();
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值