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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WJN_YES 中级黑马   /  2014-11-15 10:08  /  911 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我看了毕老师的视频,编写Tcp文件复制的时候总会出现Connection refused: connect或者Connection reset,请问这是为什么啊?下面是我的程序,请大神指点:
服务端:
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 TcpCopyServer {

        public static void main(String[] args) throws Exception {
                // 建立连接
                ServerSocket s = new ServerSocket(10004);
                Socket ss = s.accept();
                String ip = ss.getInetAddress().getHostAddress();
                System.out.println(ip+"....connected");
                //源是网络输入流,读取信息
                BufferedReader bufr = new BufferedReader(new InputStreamReader(ss.getInputStream()));
                //目的是copy 写入文件中去
                //BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy1.txt")));
                PrintWriter pw = new PrintWriter(new FileWriter("copy1.txt"),true);
                String line = null;
                while((line = bufr.readLine())!=null){
                        pw.write(line);
                }
               
                //给出反馈信息
                PrintWriter pw1 = new PrintWriter(ss.getOutputStream(),true);
                pw1.write("上传成功");
                pw.close();
                ss.close();
                s.close();
               
        }

}

客户端:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TcpCopyClient {

        public static void main(String[] args) throws Exception {
                //1.建立连接
                Socket s = new Socket("192.168.25.166",10004);
                //源是文件
                BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
                //目的是网络输出流
                PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
                String line = null;
                while((line = bufr.readLine())!=null){
                        pw.write(line);
                }
                s.shutdownOutput();//关闭客户端的输出流。相当于给流中加入一个结束标记-1.
               
                //读取服务端传回来的反馈信息
                BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
                String len = buff.readLine();
                System.out.println(len);
                bufr.close();
                s.close();
        }

}

3 个回复

倒序浏览
解决了,用PrintWriter时候要用println()方法,才会换行刷新,否则没有数据,而且貌似在MyEclipse中运行需要在Java视图下才可以!
回复 使用道具 举报
恩恩,楼主好强大:lol
回复 使用道具 举报
Whero 发表于 2014-11-15 11:19
恩恩,楼主好强大

哈哈哈哈!你的强大支撑着我!哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马