Echo程序是一个网络编程通信交互的一个经典示例,称为回应程序。即客户端输入哪些内容,服务端会在这些内容前加上“ECHO:”并将信息发回给客户端,下面便是这个程序。
- /*
- Tcp传输经典示例:ECHO程序
- */
- import java.net.*;
- import java.io.*;
- class EchoServer
- {
- public static void main(String[] args) throws Exception
- {
- ServerSocket ss = null;//定义ServerSocket对象
- Socket s = null;//定义Socket对象,表示客户端
- PrintStream out = null;//定义输出流
- BufferedReader bufr = null;//用于接受客户端发来的消息
- ss = new ServerSocket(8888);
- while(true)
- {
- System.out.println("服务器运行,等待客户端连接");
- s = ss.accept();//接受客户端连接
- bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));//得到客户端的输入信息
- out = new PrintStream(s.getOutputStream());//实例化客户端输出流
- boolean flag = true;
- while(flag)
- {
- String str = buf.readLine();
- if(str==null || "".equals(str))
- {
- flag = false;
- }
- else
- {
- if("bye".equals(str))//定义一个结束标记
- {
- flag = false;
- }else
- {
- out.println("ECHO:"+str);//向客户端回显信息
- }
- }
- }
- out.close();//关闭输出流
- s.close();//关闭客户端
- }
- ss.close();//关闭服务器端
- }
- }
- class EchoClient
- {
- public static void main(String[] args)
- {
- Socket s = null;//创建Socket对象
- s = new Socket("localhost",8888);//指定连接主机及端口
- BufferedReader bufr = null;
- PrintStream out = null;
- BufferedReader input = null;
- input =new BufferedReader(new InputStreamReader(System.in));//从键盘接收数据
- out = new PrintStream(s.getOutputStream());//向服务器端输出信息
- bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));//接收服务端输入信息
- boolean flag = true;
- while(flag)
- {
- System.out.println("输入信息:");
- String str = input.readLine();//从键盘接受信息
- out.println(str);
- if("bye".equals(str))//定义接受标记
- {
- flag = false;
- }else
- {
- String echo = bufr.readLine();//接受ECHO信息
- System.out.println(echo);
- }
- }
- s.close();//关闭Socket
- bufr.close();//关闭输入流
- }
- }
复制代码 |
|