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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 进击的大鹏 中级黑马   /  2014-10-11 11:19  /  1351 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。

服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

这题完全看不懂啊,有没有会的最好加个注释。
还有就是基础测试题那些简答题你们都写哪儿了?

9 个回复

倒序浏览
import java.io.*;
import java.net.*;

class Client
{
        public static void main(String []args)throws Exception{
                //建立连接
                Socket s = new Socket("172.40.84.99", 10006);

                //定义键盘录入对象
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
               
                //定义网络流读对象       
                BufferedReader brIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

                //定义网络流写对象
                BufferedWriter bwOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

                String str = null;
                while((str = br.readLine()) != null){
                        bwOut.write(str);
                        bwOut.newLine(); //加换行(在服务端用于结束标记)
                        bwOut.flush();  //刷新缓存区数据
                       
                        //读取从服务器端发送过来的数据
                        System.out.println(brIn.readLine());
                        //结束标记, 当输入为over时结束
                        if(str.equals("over")){
                                break;
                        }
                }

                br.close();
                s.close();
        }
}

class Server  
{       
        public static void main(String args[])throws Exception{
                ServerSocket ss = new ServerSocket(10006);

                Socket s = ss.accept();

                System.out.println(s.getInetAddress().getHostAddress() + " : 连接已建立");

                BufferedReader brIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

                BufferedWriter bwOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

                String str = null;

                while((str = brIn.readLine()) != null){
                        //System.out.println(str);
                        //将字符串进行反转
                        StringBuilder sb = new StringBuilder(str);
                        str = sb.reverse();

                        bwOut.write(str.toUpperCase());
                        bwOut.newLine();
                        bwOut.flush();
                }

                s.close();
                ss.close();
        }
       
}

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主这个若是是看不懂 建议 还是把视频多看几遍!
回复 使用道具 举报
怎么会看不懂呢?这题不是最基本的么。。。如果这题看不懂,那还是建议你重新再看一遍吧
回复 使用道具 举报
楼主,这个题就是毕老师网络视频里讲的,照着老师的写就行~
回复 使用道具 举报
package com.itheima;
/**
* 10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。

服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

*/
import java.io.*;
import java.net.*;
public class Test10_Server {
        public static void main(String[] args) throws Exception {
                //创建服务器socket对象 并且监听10000端口
                ServerSocket ss = new ServerSocket(10000);
                //获取连接的客户端socket对象
                Socket s = ss.accept();
                //获取客户端ip地址
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+".....connected");
                //定义服务器端socket读取流
                BufferedReader bufIn =
                                new BufferedReader(new InputStreamReader(s.getInputStream()));
                //定义socket输出流,将收到的字符串反转之后写入到socket输出流,并发送给客户端
                BufferedWriter bufOut =
                                new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                String line = null;
                while((line = bufIn.readLine()) != null){//读客户端发送过来的字符串
                        //将读到的字符串反转
                        line = new StringBuffer(line).reverse().toString();
                        //将反转后的字符串写给客户端
                        bufOut.write(line);
                        bufOut.newLine();
                        bufOut.flush();       
                }
                s.close();
                ss.close();
        }

}



package com.itheima;
import java.io.*;
import java.net.*;
public class Test10_Client {
        public static void main(String[] args) throws Exception {
                //定义客户端socket 连接到本机,即127.0.0.1  端口号10000
                Socket s = new Socket("127.0.0.1",10000);
                //定义键盘读取流对象
                BufferedReader bufr =
                                new BufferedReader(new InputStreamReader(System.in));
                //定义目的流,将数据写入socket输出流,发送给服务端。
                BufferedWriter bufOut =
                                new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                //定义一个socket读取流,读取服务端返回的反转字符串信息
                BufferedReader bufIn =
                                new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line = null;
                while((line=bufr.readLine()) != null){//读键盘输入的数据,如果输入over则结束循环
                        if("over".equals(line))
                                break;
                        bufOut.write(line);//把键盘输入的数据写入socket输出流中,写给服务器
                        bufOut.newLine();
                        bufOut.flush();
                        String str = bufIn.readLine();//读取服务器发送回来的反转过的字符串
                        System.out.println("server: "+str);               
                }
                bufr.close();
                s.close();
        }
}
回复 使用道具 举报
郭.威 中级黑马 2014-10-11 22:53:46
7#
。。。。。。。。。。。。。。。
回复 使用道具 举报
夕默 中级黑马 2014-10-11 23:48:21
8#
我也遇到了这个题。。。建议楼主还是看视频自己解决。。。视频里面的知识点都很全面,有些题目我也是看了视频完成的,满分,飘过。。。
回复 使用道具 举报
java-01 中级黑马 2014-10-11 23:57:07
9#
视频里的内容而已
回复 使用道具 举报
我记得视频上应该有这一块啊,楼主再复习一下,其实不太难,就几个流,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马