用TCP做了个发送文本的练习


今天 的练习题是通过键盘向服务器端发送数据,而且客户端可以通过输入文本路径向服务器端发送文本的内容(格式如:D:\\me.txt)。服务器原样返回数据给客户端。
  我的思路是:
      客户端:
1、建立一个客户端Socket,传入相应的端口。
2、定义4个缓冲区,一个是接受从键盘输入的数据,一个是读取服务器端反会来的数据,一个是将客户端的数据发给服务端,
     一个是用来读取文本数据的。
3、判断键盘输的字符是不是等于“end”,是就结束程序
4、关闭资源
     服务器:
1、建立一个客户端ServerSocket,并监听客户端的端口。
2、定义2个缓冲区:一个是接收客户端的数据,一个是用来想客户端返回数据
3、关闭资源.

对于一下细节,有什么不懂的可以回我

/**
  * @param args
  * @throws IOException
  * @throws 
  */
public static void main(String[] args) throws  IOException {
  Socket so = new Socket("169.254.101.68",8080);
  BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
  BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(so.getOutputStream()));
  BufferedReader bufin = new BufferedReader(new InputStreamReader(so.getInputStream()));

  String lin = null;
  while((lin = buf.readLine())!=null){
   if("end".equals(lin)){
    break;
   }
    File f = new File(lin);
    if(f.exists()){
     BufferedReader bufs = new BufferedReader(new FileReader(f));
      String l = null;
        while((l = bufs.readLine())!=null){
         bufw.write(l);
        bufw.newLine();
        bufw.flush();
        String str = bufin.readLine();
        System.out.println(str);
        }
    }else{
    bufw.write(lin);
    bufw.newLine();
    bufw.flush();
    String str = bufin.readLine();
    System.out.println(str);
    }
  }
  buf.close();
  so.close();
}
/**
  * 服务端
* @author zcq
  *
  */
public class Servers{
  public static void main(String args[]) throws IOException{
   ServerSocket server = new ServerSocket(8080);
   Socket s =server.accept();//接受数据
BufferedReader buf = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter buffw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
   String ip = s.getInetAddress().getHostAddress();
   System.out.println(ip+".......连接成功!");
String lin =null;
   while((lin=buf.readLine())!=null){
    buffw.write(lin.toString());
    buffw.newLine();
    buffw.flush();
   }
   s.close();
   server.close();
  }
}




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值