A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑传庆 中级黑马   /  2012-6-11 13:58  /  1850 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑传庆 于 2012-6-11 14:13 编辑

  通过键盘向服务器端发送数据,而且客户端可以通过输入文本路径向服务器端发送文本的内容(格式如: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();
  }
}

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 赞一个!

查看全部评分

1 个回复

倒序浏览
本帖最后由 赵兵锋 于 2012-6-11 15:31 编辑

BufferedWriter可以调用方法newLine来产生一个换行
另可用System.getProperty("line.separator");获取当前平台上的换行符,返回字符串类型。
或是直接输出\n 或\r\n。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马