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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宗士为 中级黑马   /  2012-5-19 20:21  /  1317 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


客户端通过键盘录入单词并发送到服务端,服务端在显示后,将其转成大写反馈给客户端。
当客户端录入内容为over时,结束录入。

但是传输不了  找不到问题 大家帮看看
public class FileServer {
        public static void main(String[] args) throws IOException {//                获取ServerSocket的服务端Socket                ServerSocket ss = new ServerSocket(8889);//                通过accput()获取客户端Socket                Socket s = ss.accept();                String ip = s.getInetAddress().getHostAddress();                System.out.println(ip + "------ing");//                获取输入流                BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));//                获取输出流                PrintWriter out = new PrintWriter(s.getOutputStream(),true);                                String len;                while((len = in.readLine()) != null)                        System.out.println(len);                                out.println(len.toUpperCase());//                关闭资源                s.close();                ss.close();                        }}
public class FileClient {
        /**         * @param args         * @throws Exception          */        public static void main(String[] args) throws Exception {//                创建socket对象                Socket s = new Socket("10.1.31.66",8889);//                获取输出流                PrintWriter out = new PrintWriter(s.getOutputStream(),true);                BufferedReader bufin= new BufferedReader(new InputStreamReader(System.in));//                获取输入流                BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));                                String len = null;                while((len = bufin.readLine()) != null) {                        if("over".equals(len))                                break;                }                        out.print(len);                String str = in.readLine();                System.out.println(str);                        //                关闭资源                s.close();
        }}

1 个回复

倒序浏览
楼主写的时候注意编码格式,有点乱,而且就服务器读取的那块儿还有问题,while循环连大括号都没有。不看了,给你一个写好的服务器客户端的代码吧,里边都有注释,你对照看一下。
public class FileServer{

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {

                //1,服务器打开端口
                ServerSocket ss = new ServerSocket(8889);
               
                //2,获取socket对象。
                Socket s = ss.accept();
               
                //获取ip.
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+"......connected");
               
                //3,获取socket读取流,并装饰。
                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                //4,获取socket的输出流,并装饰。
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);
               
                String line = null;
                while((line=bufIn.readLine())!=null){
                        
                        System.out.println(line);
                        out.println(line.toUpperCase());

                }
  //注意一下你写的格式
                //关闭资源
                s.close();
                ss.close();
               
        }

}


public class FileClient {

        /**
         * @param args
         * @throws IOException
         * @throws UnknownHostException
         */
        public static void main(String[] args) throws UnknownHostException, IOException {


               
                //1,创建socket客户端对象。
                Socket s = new Socket("10.1.31.66",8889);
               
                //2,获取键盘录入。
                BufferedReader bufr  =
                                new BufferedReader(new InputStreamReader(System.in));
               
                //3,socket输出流。
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);
               
               
                //4,socket输入流,读取服务端返回的大写数据
                BufferedReader bufIn  = new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                String line = null;
               
                while((line=bufr.readLine())!=null){
                        
                        if("over".equals(line))
                                break;
                        
                        out.println(line);
                        
                        //读取服务端发回的一行大写数。
                        String upperStr = bufIn.readLine();
                        System.out.println(upperStr);
                }
               
                s.close();
               
        }

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