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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕梦婷

初级黑马

  • 黑马币:16

  • 帖子:7

  • 精华:0

© 毕梦婷 初级黑马   /  2014-6-18 16:55  /  1390 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 毕梦婷 于 2014-6-18 20:02 编辑

我写了一个客户端和一个服务端,但我怎么测试啊
  1. class Client {
  2.         public static void main(String[] args) throws IOException, IOException {
  3.                 System.out.println("客户端启动.....");
  4.                 Socket s = new Socket("192.168.1.253", 10004);
  5.                
  6.                 Scanner sc = new Scanner(System.in);
  7.                 System.out.println("请输入传输文件的路径:");
  8.                 String str = sc.next();
  9.                
  10.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(str));
  11.                 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
  12.                 int len = 0;
  13.                 byte[] buf = new byte[1024];
  14.                 while ((len = bis.read(buf)) != -1) {
  15.                         bos.write(buf, 0, len);
  16.                         bos.flush();
  17.                 }
  18.                 s.shutdownOutput();
  19.                 BufferedInputStream bufIs = new BufferedInputStream(s.getInputStream());
  20.                 byte[] bufIn = new byte[1024];
  21.                 int lenIn = bufIs.read(bufIn);
  22.                 System.out.println(new String(bufIn, 0, lenIn));

  23.                 bis.close();
  24.                 s.close();

  25.         }

  26. }

  27. class Server {
  28.         public static void main(String[] args) throws IOException {
  29.                 System.out.println("服务器端启动......");
  30.                
  31.                 //创建服务端socket对象。
  32.                 ServerSocket ss = new ServerSocket(10004);
  33.                
  34.                 //获取客户端对象。
  35.                 Socket s = ss.accept();
  36.                 String ip = s.getInetAddress().getHostAddress();
  37.                
  38.                 //创建一个file对象来存储传输内容
  39.                 File dir = new File("src\\com\\itheima");
  40.                 //判断是否存在,不存在的话就新建一个
  41.                 if (!dir.exists()) {
  42.                         dir.mkdirs();
  43.                 }
  44.                 BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
  45.                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(dir, ip)));
  46.                 byte[] buf = new byte[1024];
  47.                 int len = 0;
  48.                 while ((len = bis.read(buf)) != -1) {
  49.                         bos.write(buf);
  50.                         bos.flush();
  51.                 }
  52.                 BufferedOutputStream bufos = new BufferedOutputStream(s.getOutputStream());
  53.                 bufos.write("上传成功".getBytes());
  54.                 bufos.flush();

  55.                 bos.close();
  56.                 s.close();
  57.                 ss.close();

  58.         }

  59. }
复制代码


点评

如果程序有什么错误,希望大家能够指出来!  发表于 2014-6-18 16:58

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

7 个回复

倒序浏览
启动两个命令窗口,用java.exe分别执行Client和Server这两个文件。Client创建的Socket用127.0.0.1这个地址。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
唐杰亮 发表于 2014-6-18 17:34
启动两个命令窗口,用java.exe分别执行Client和Server这两个文件。Client创建的Socket用127.0.0.1这个地址 ...

大神,上面代码49行那里,BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(dir, ip)));        这里new File(dir, ip)的ip有问题,我该怎么让服务器传过来的文件,保持相同的文件名和扩展名呢?
回复 使用道具 举报
毕老师的视频有。。。。
回复 使用道具 举报
毕梦婷 发表于 2014-6-18 17:54
大神,上面代码49行那里,BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new ...

一个解决方案是在client端里先获取file的文件名,然后再传给server端。然后用这个文件名替换ip这个参数。

点评

谢谢,已经搞定了  发表于 2014-6-18 20:02
回复 使用道具 举报
有点难度啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马