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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

客户端发送字符串,由服务端接收并反转然后返回给客户端。
客户端
public static void main(String[] args) {
                // TODO Auto-generated method stub
                Socket s =null;
                BufferedReader bufr=null;
                PrintWriter out =null;
                BufferedReader bufin=null;
                try
                {        //创建客户端对象
                        s = new Socket("192.168.0.101",9007);
                        while(true)
                        {        //键盘录入
                                bufr=new BufferedReader(new InputStreamReader(System.in));
                                //创建一个输出流
                                out =new PrintWriter(s.getOutputStream());
                                //创建一个获取输入流
                                bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
                                String line =null;
                                while((line=bufr.readLine())!=null)
                                {        //定义一个结束标记
                                        if("over".equals(line))
                                                break;
                                        //向服务端发送数据
                                        out.println(line);
                                        String info=bufin.readLine();
                                        //打印服务端返回的数据
                                        System.out.println("info="+info);
                                }
                        }
                }
                catch(Exception e)
                {        //异常处理
                        throw new RuntimeException("错误");
                }
                finally
                {
                        if(s!=null)
                        try
                        {        //关闭客户端
                                s.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("错误");
                        }
                }
        }

服务端
public static void main(String[] args)throws Exception {
                //创建一个服务端对象并与客户端连接
                ServerSocket ss=new ServerSocket(9007);
                Socket s =ss.accept();
                //获取客户端的地址
                String ip =s.getInetAddress().getHostAddress();
                System.out.println(ip+".......is connected");
                try
                {
                        while(true)
                        {        //创建一个输出流       
                                BufferedReader bufin =
                                        new BufferedReader(new InputStreamReader(s.getInputStream()));
                                //常见一个获取输入流
                                PrintWriter out = new PrintWriter(s.getOutputStream());
                                String line =null;
                                while((line=bufin.readLine())!=null)
                                {       
                                        //打印从客户端获得的数据
                                        System.out.println(line);
                                        //建立一个缓冲区用于存储从客户端获得的数据
                                        StringBuilder sb=new StringBuilder(line);
                                        //将获得的字符串进行反转并打印
                                        String re=sb.reverse().toString();
                                        System.out.println(sb+"......"+re);
                                        //将反转的的字符串返回给客户端
                                        out.println(re);
                                }
                        }
                }
                catch(Exception e)
                {        //异常处理
                        throw new RuntimeException("错误");
                }
                finally
                {
                        if(s!=null)
                        try
                        {        //关闭客户端
                                s.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("错误");
                        }
                        if(ss!=null)
                        try
                        {        //关闭服务端
                                ss.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("错误");
                        }
                }
        }

可以 建立连接,但是客户端发送数据服务端接收不到啊。

3 个回复

倒序浏览
继续看视频呗{:3_47:}
回复 使用道具 举报
本帖最后由 依然超级赛亚人 于 2014-8-28 12:51 编辑

PrintWriter的构造参数列表中应该有"true",没有的话就没刷新。还有点问题,你的这个程序输入over根本不会结束,客户端和服务端明明一层while就可以了,为什么两层?这样的话你结束了输入但外层没有结束,还在等,输入over不会停止。把这两个外层的while都去了吧。再试试。
回复 使用道具 举报 1 0
依然超级赛亚人 发表于 2014-8-28 12:43
PrintWriter的构造参数列表中应该有"true",没有的话就没刷新。还有点问题,你的这个程序输入over根本不会 ...

多谢,问题已经解决了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马