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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 酱爆 高级黑马   /  2013-10-2 23:26  /  1385 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 酱爆 于 2013-10-3 20:19 编辑

没有抛异常, 不知道是哪不对,大家帮忙看看
  1. import java.io.*;
  2. import java.net.*;

  3. class TextClient
  4. {
  5.         public static void  main(String[] args)
  6.         {
  7.                
  8.                 Socket s = null;
  9.                 BufferedReader br = null;
  10.                
  11.                 try
  12.                 {
  13.                         s = new Socket("192.168.1.102",10001);
  14.                         System.out.println("AAAAAAAAAAAAAAAGGGGGGGGGGGGGGGGGGGFFFF");
  15.                         System.out.println(s.getInetAddress().getHostAddress());
  16.                         br = new BufferedReader(new FileReader("IPDome.java"));
  17.                         
  18.                         PrintWriter out = new PrintWriter(s.getOutputStream(),true);        
  19.                         
  20.                         String line = null;
  21.                         
  22.                         while ((line = br.readLine()) != null)
  23.                         {
  24.                                 out.println(line);
  25.                         }
  26.                         out.println("over");
  27.                         
  28.                         BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
  29.                         
  30.                         String str = null;
  31.                         
  32.                         str = bufIn.readLine();
  33.                         System.out.println(str);
  34.                         
  35.                                                 
  36.                 }
  37.                 catch(Exception e)
  38.                 {
  39.                         e.printStackTrace();
  40.                 }
  41.                 finally
  42.                 {
  43.                         try
  44.                         {
  45.                                 if (br != null)
  46.                                         br.close();
  47.                                 if (s != null)
  48.                                         s.close();
  49.                         }
  50.                         catch(Exception e)
  51.                         {
  52.                                 e.printStackTrace();
  53.                         }
  54.                 }
  55.                
  56.         }
  57. }

  58. class TextServer
  59. {
  60.         public static void main(String[] args)
  61.         {
  62.                 ServerSocket ss = null;
  63.                 Socket s  = null;
  64.                 PrintWriter pw = null;
  65.                
  66.                 try
  67.                 {
  68.                         ss = new ServerSocket(10001);
  69.                         s = ss.accept();
  70.                         String ip = s.getInetAddress().getHostAddress();
  71.                         System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAA");
  72.                         System.out.println(ip);
  73.                         
  74.                         BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
  75.                         pw = new PrintWriter(new FileWriter("D:\\123.txt"),true);
  76.                         String str = null;
  77.                         
  78.                         while ((str = bufIn.readLine()) != null)
  79.                         {
  80.                                 
  81.                                 if ("over".equals(str))
  82.                                         break;
  83.                                 pw.println(str);
  84.                         }
  85.                         

  86.                         
  87.                         PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  88.                         
  89.                         out.println("上传成功!");
  90.                         
  91.                         
  92.                 }
  93.                 catch(Exception e)
  94.                 {
  95.                         e.printStackTrace();
  96.                 }
  97.                 finally
  98.                 {
  99.                         try
  100.                         {
  101.                                 if (pw != null)
  102.                                         pw.close();
  103.                                 if (s != null)
  104.                                         s.close();
  105.                                 if (ss != null)
  106.                                         ss.close();
  107.                         }
  108.                         catch(Exception e)
  109.                         {
  110.                                 e.printStackTrace();
  111.                         }
  112.                 }
  113.         }
  114. }
复制代码



评分

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

查看全部评分

2 个回复

倒序浏览
又一个敲代码不写注释的!苦啊  哥们  不过还好你这功能是常见的,要不就不好读了.
1,在客户端里当你写完数据流的时候一定关闭套接字符流s.shutdownOutPut();这步很关键的,如果不执行的话,服务端是受不到数据流的.
2,在服务端里,在向客户端写完数据流时也要关闭套接字符流,否则客户端会认为服务端还有数据要写,所以客户端是接受不到服务端的数据流的.
如果你还看不懂的话,我下面的代码跟你的要求是类似的,你看下就知道了:
  1. package day23;

  2. /*
  3. * 多线程  tcp传输图片
  4. *
  5. * */
  6. import java.net.*;
  7. import java.io.*;

  8. public class TcpImage {
  9.         public static void main(String[] ages) {
  10.                 // 客户端
  11.                 new Thread(new Runnable() {
  12.                         //创建服务端套接字
  13.                         Socket sk = null;
  14.                         //定义文件读取流
  15.                         FileInputStream fis = null;
  16.                         public void run() {
  17.                                 try {
  18.                                         sk = new Socket(InetAddress.getByName("192.168.128.1"),
  19.                                                         2008);
  20.                                         OutputStream os = sk.getOutputStream();
  21.                                         //将服务获取的读取流转换成字符流
  22.                                         BufferedReader bisr = new BufferedReader(
  23.                                                         new InputStreamReader(sk.getInputStream()));
  24.                                         //获取原文件的读取流
  25.                                         fis = new FileInputStream("E:\\a.txt");
  26.                                         byte[] bt = new byte[1024];
  27.                                         int end;
  28.                                         while ((end = fis.read(bt)) != -1) {
  29.                                                 os.write(bt, 0, end);
  30.                                         }
  31.                                         //关闭客服端的写入流  这不非常重要 如果没有关闭该流  则数据不会发送到服务端
  32.                                         sk.shutdownOutput();
  33.                                         String line;
  34.                                         while ((line = bisr.readLine()) != null) {
  35.                                                 System.out.println(line);
  36.                                         }
  37.                                 } catch (Exception e) {
  38.                                         throw new RuntimeException("客户端异常退出");
  39.                                 } finally {
  40.                                         if (fis != null) {
  41.                                                 try {
  42.                                                         fis.close();
  43.                                                 } catch (IOException e) {
  44.                                                         throw new RuntimeException("客户端服务关闭异常");
  45.                                                 }
  46.                                         }

  47.                                         if (sk != null) {
  48.                                                 try {
  49.                                                         sk.close();
  50.                                                 } catch (IOException e) {
  51.                                                         throw new RuntimeException("客户端服务关闭异常");
  52.                                                 }
  53.                                         }
  54.                                 }
  55.                         }
  56.                 }).start();
  57.                 // 服务端
  58.                 new Thread(new Runnable(){
  59.                         //创建一个服务套接字
  60.                         ServerSocket ssk = null;
  61.                         FileOutputStream fos = null;
  62.                         public void run() {
  63.                                 try {
  64.                                         ssk = new ServerSocket(2008);
  65.                                         fos = new FileOutputStream("F:\\a.txt");
  66.                                         //获取服务端接受到的客户套接字
  67.                                         Socket sk = ssk.accept();
  68.                                         //获取客户套接字的读取流对象
  69.                                         InputStream br = sk.getInputStream();
  70.                                         BufferedWriter bw = new BufferedWriter(
  71.                                                         new OutputStreamWriter(sk.getOutputStream()));
  72.                                         byte[] bt = new byte[1024];
  73.                                         int endr;
  74.                                         while ((endr = br.read(bt)) != -1) {
  75.                                                 fos.write(bt, 0, endr);
  76.                                         }
  77.                                         bw.write(sk.getInetAddress()+"成功上传");
  78.                                         bw.newLine();
  79.                                         bw.flush();
  80.                                         //关闭服务端接受的客户端套接字的写入流  这个步骤也非常重要 如果没有该步 那么服务端线程将处于线程等待机制
  81.                                         sk.shutdownOutput();
  82.                                 } catch (IOException e) {
  83.                                         throw new RuntimeException("服务端异常退出");
  84.                                 } finally {
  85.                                         if (fos != null) {
  86.                                                 try {
  87.                                                         fos.close();
  88.                                                 } catch (IOException e) {
  89.                                                         throw new RuntimeException("服务写入流关闭异常");
  90.                                                 }
  91.                                         }
  92.                                         if (ssk != null) {
  93.                                                 try {
  94.                                                         ssk.close();
  95.                                                 } catch (IOException e) {
  96.                                                         throw new RuntimeException("服务关闭异常");
  97.                                                 }
  98.                                         }
  99.                                 }
  100.                         }
  101.                 }).start();
  102.         }
  103. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
straw 发表于 2013-10-3 12:29
又一个敲代码不写注释的!苦啊  哥们  不过还好你这功能是常见的,要不就不好读了.
1,在客户端里当你写完数据 ...

哈哈,我会改正的!解决了,是ip出了问题,谢谢!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马