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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾浩田 高级黑马   /  2014-8-14 10:58  /  979 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为何我自己写的通过TCP服务来进行文件复制过程,运行时会出现socketException呢?API中也没有发现那个方法会抛出这个异常,求高手帮忙

4 个回复

倒序浏览
你代码都不贴出来,别人怎么帮你
回复 使用道具 举报
class Demo96
{
        public static void main(String[] args) throws Exception
        {
                client();
                System.out.println("Hello World!");
        }
        public static void client() throws Exception{
                Socket s = new Socket("192.168.0.106", 1236);
                File file = new File("f://1.txt");
                if(file.exists() == false){
                        return;
                }
                //数据源
                BufferedReader br = new BufferedReader(new FileReader(file));
                //数据目的
                BufferedWriter bw_socket =
                        new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                String line = null;
                while((line = br.readLine()) != null){
                        bw_socket.write(line);
                        bw_socket.newLine();
                        bw_socket.flush();
                }
                //接收来自服务端反馈
                BufferedReader br_socket =
                        new BufferedReader(new InputStreamReader(s.getInputStream()));
                String str = br_socket.readLine();
                System.out.println(str);

                s.close();
                br.close();
               
        }
}
class Demo97
{
        public static void main(String[] args) throws Exception
        {
                server();
                System.out.println("Hello World!");
        }
        public static void server()throws Exception {
                ServerSocket ss = new ServerSocket(1236);
                Socket s = ss.accept();
                System.out.println("连接的客户端ip: "+s.getInetAddress().getHostAddress());
                //File file = new File("f://1.txt");
                //数据源
                BufferedReader in_socket =
                        new BufferedReader(new InputStreamReader(s.getInputStream()));
                //数据目的
                BufferedWriter bw =
                        new BufferedWriter(new FileWriter("f://1(1).txt"));
                String line = null;
                //进行写数据
                while((line = in_socket.readLine()) != null){
                        System.out.println(line);
                        bw.write(line);
                        bw.newLine();
                        bw.flush();
                }
                //反馈给客户端
                BufferedWriter bw_socket =
                        new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                bw_socket.write("upload success!!");
                //关闭客户端和复制文件的输出流
                ss.close();
                s.close();


        }
}
回复 使用道具 举报
在我电脑上测试多次都能同,lz把ServerSocket();端口调大些试试,1236端口比较小可能已经被占用,另外为了在client端读到服务端的反馈信息需要在client端数据发送完后加上输出结束标志(s.shutdownOutput(););同时服务器端的 反馈给客户端信息写完后要刷新,不然客户端会收到null(测试出来的)
能力有限希望能解决楼主的问题!

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
yqj 发表于 2014-8-14 15:55
在我电脑上测试多次都能同,lz把ServerSocket();端口调大些试试,1236端口比较小可能已经被占用,另外为了 ...

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