
1 import java.io.*; 2 import java.net.ServerSocket; 3 import java.net.Socket; 4 5 public class EchoServerDemo { 6 7 public static void main(String[] args){ 8 //创建一个服务器端的socket(1024-65535) 9 try { 10 ServerSocket server = new ServerSocket(6666); 11 System.out.println("服务器已经启动,正在等待客户端连接"); 12 //等待客户端的链接,造成阻塞,如果有客户端连接成功,立即返回一个socket对象 13 Socket socket = server.accept(); 14 System.out.println("客户端连接成功" + server.getInetAddress().getHostAddress()); 15 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 16 //通过输入流读取网络数据,如果没有数据,那么会阻塞 17 String info = br.readLine(); 18 System.out.println(info); 19 //获取输出流,向客户端返回消息 20 PrintStream ps = new PrintStream(new BufferedOutputStream(socket.getOutputStream())); 21 22 ps.println("echo" + info); 23 ps.flush(); 24 //关闭 25 ps.close(); 26 br.close(); 27 } catch (IOException e) { 28 e.printStackTrace(); 29 } 30 } 31 }

1 import java.io.*; 2 import java.net.Socket; 3 4 public class EchoClientDemo { 5 public static void main(String[] args) { 6 //创建一个socket对象,指定要链接的服务器 7 try { 8 Socket socket = new Socket("localhost",6666); 9 //获取socket的输入输出流 10 PrintStream ps = new PrintStream(new BufferedOutputStream(socket.getOutputStream())); 11 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 12 13 ps.println("hello,my name is Bin"); 14 ps.flush(); 15 //读取服务器端返回的数据 16 String info = br.readLine(); 17 System.out.println(info); 18 ps.close(); 19 br.close(); 20 21 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } 25 } 26 }