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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

7 个回复

倒序浏览
看了毕老师的视频就可以写出来的,你这样不思考等别人做出题只能让你停步不前
我提示你一句吧StringBuilder有反转函数,加油

点评

只是想和大家讨论一下思路而已,正在看视频,谢谢。  发表于 2014-3-4 20:07

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
程序这样编写对不对?

/**
* 需求: 10 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

*
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

class Test10 {// TCP服务端
        public static void main(String[] args) throws UnknownHostException // 程序主函数。并声明异常类型。
        {
                Socket socket = null; // 创建socket端口,默认值为null.
                try {
                        while (true)// 循环语句,使服务端保持常开状态。
                        {
                                ServerSocket serverSocket = new ServerSocket(8000);// 创建绑定端口8000的对象ServerSocket
                                socket = serverSocket.accept();// 接收客户端请求,得到Socket
                                BufferedReader br = new BufferedReader(new InputStreamReader(
                                                socket.getInputStream()));// 创建带缓冲的字符读入流
                                String sr = br.readLine();// 读取一个文本行
                                PrintStream ps = new PrintStream(socket.getOutputStream());// 此输出流不会抛出异常
                                ps.println(new StringBuffer(sr).reverse());// 将反转后的字符串打印到客户端屏幕上
                        }

                } catch (IOException e) // 接收异常。
                {
                        e.printStackTrace();// 异常处理方式为详细打印问题信息。
                } finally// 最后执行语句。
                {
                        if (socket != null)// 如果端口为空,则执行下面语句。
                        {
                                try {
                                        socket.close();// socket端口关闭.
                                } catch (IOException e)// 抛出异常。
                                {
                                        e.printStackTrace();// 异常处理方式。
                                }
                        }
                }
        }
}
//TCP客户端
class TCPClient {
                public static void main(String[] args)// 程序主函数。
                {
                        Socket socket = null;// 创建Socket端口。默认值为null.
                        try {
                                socket = new Socket(InetAddress.getLocalHost(), 8000);// 创建Socket,
                                                                                                                                                // 请求服务端
                                while (true)// 循环语句。
                                {
                                        BufferedReader br = new BufferedReader(
                                                        new InputStreamReader(socket.getInputStream()));// 键盘录入,接受键入字符。
                                        PrintStream ps = new PrintStream(socket.getOutputStream());// 创建一个输出流,用于返回信息。
                                        Scanner scanner = new Scanner(System.in); // 创建Scanner
                                        System.out.println("请输入一个字符串:"); // 给出提示输入
                                        String line = scanner.nextLine(); // 从键盘输入读取一行
                                        ps.println(line); // 发送到服务端
                                        System.out.println(br.readLine()); // 读取服务端发回的字符串, 打印
                                }
                        } catch (Exception e)// 接受抛出的异常。
                        {
                                e.printStackTrace();// 处理方式,详细打印。
                        } finally {
                                if (socket != null)// 判断socket端口是否为空。
                                {
                                        try {
                                                socket.close();// 端口关闭。
                                        } catch (IOException e)// 如果抛出异常,则接受处理。
                                        {
                                                e.printStackTrace();// 处理方式,详细打印异常。
                                        }
                                }
                        }
                }
        }
回复 使用道具 举报
写两个类,客户端和服务器端怎么建立对象就不罗嗦了。而网络数据的交互是靠IO流实现的,那么。你该考虑io配合键盘录入,不要忘了写结束录入的判断。其次,发送获取的对象,一定要一致,所以建议写在测试类中,进行对象传递。思路很清楚的,至于反转哪些都是调用本身方法或者转字符倒序遍历的事罢了。加油哦

点评

谢谢!对我很有帮助。  发表于 2014-3-6 11:50
回复 使用道具 举报
@zzkang0206
斑竹老是不给分,火大

点评

顶!!!是要给我加分吧?  发表于 2014-3-6 15:18
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马