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

© 董将 中级黑马   /  2012-12-21 15:23  /  1442 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 董将 于 2012-12-22 19:45 编辑

/*
*
使用TCP协议写一个可以上传文件的服务器和客户端。
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class UploadClient {
        public static void main(String[] args) throws IOException {
                //创建Socket对象并且指定端口
                Socket s = new Socket(InetAddress.getByName("192.168.1.1"), 22222);
                //创建输出流对象
                BufferedReader br = new BufferedReader(
                                new FileReader("exercise.txt"));
                //创建写入流对象
                PrintWriter pw = new PrintWriter(s.getOutputStream(), true);

                String line = null;
                while ((line = br.readLine()) != null) {
                        pw.println(line);
                }
                // 通过Socket对象通知你我的流已经结束
                s.shutdownOutput();

                BufferedReader server = new BufferedReader(new InputStreamReader(
                                s.getInputStream()));
                String text = server.readLine();
                System.out.println("服务器的反馈是:" + text);
                //释放资源
                br.close();
                s.close();
        }
}

import java.io.BufferedReader;
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 UploadServer {
        public static void main(String[] args) throws IOException {
                //创建Socket对象并且指定端口
                ServerSocket ss = new ServerSocket(22222);
                Socket s = ss.accept();
                //创建字符流输出对象
                BufferedReader br = new BufferedReader(new InputStreamReader(
                                s.getInputStream()));
                //创建字符流输出对象
                PrintWriter pw = new PrintWriter(new FileWriter("Copy.txt"), true);

                String line = null;
                while ((line = br.readLine()) != null) {
                        pw.println(line);
                }
                //给一个反馈
                PrintWriter pw2 = new PrintWriter(s.getOutputStream(), true);
                pw2.println("上传文件成功");
                //释放资源
                pw.close();
                // s.close();
                ss.close();
        }
}

运行后报错,下面是报错提示
Exception in thread "main" java.net.ConnectException: Connection refused: connect        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:209)
        at com.itheima.UploadClient.main(UploadClient.java:17)
求指点





评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
李敬卫 来自手机 中级黑马 2012-12-21 16:41:45
沙发
很明显嘛,Connection refused意思:与服务端连接时被服务器拒绝,解决办法:因为TCP协议是面向连接的,所以你首先运行服务端程序,然后再运行客户端。这就不会报错了。我是用手机给你发的,没发复制你的代码去调试,若你写的代码没问题应该不会报错了。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 鼓励分 。

查看全部评分

回复 使用道具 举报
李敬卫 发表于 2012-12-21 16:41
很明显嘛,Connection refused意思:与服务端连接时被服务器拒绝,解决办法:因为TCP协议是面向连接的,所 ...

代码编写是没错误的
回复 使用道具 举报
本帖最后由 吴愿涛 于 2012-12-21 18:33 编辑

先运行ServerSocket端 ,网络编程是面向socket的,没人提供socket你自然就被拒绝了 。
再者检查下 exercise.txt 是否在你的项目的根目录下 。
回复 使用道具 举报
多谢,问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马