//服务器端代码 import java.io.*; import java.net.Socket; import java.net.ServerSocket; import java.net.SocketException; public class ServerTest{ public static void main(String[] args){ try{ ServerSocket s = new ServerSocket(8888); Socket s1 = s.accept(); //s1是服务器和客户端共有的 OutputStream os = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); InputStream is = s1.getInputStream(); DataInputStream dis = new DataInputStream(is); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String info; while( true){ info = dis.readUTF(); System.out.println( "客户说:"+ info); if(info.equals( "bye")){ break; } System.out.print( "服务器说:"); info = br.readLine(); dos.writeUTF(info); if(info.equals( "bye")){ break; } } dis.close(); dos.close(); s1.close(); s.close(); } catch(SocketException e){ System.out.println( "网络不正常,退出"); } catch(IOException e){ e.printStackTrace(); } } }
//客户端代码 import java.io.*; import java.net.Socket; import java.net.ServerSocket; import java.net.SocketException; public class ClientTest{ public static void main(String[] args){ try{ Socket s1 = new Socket( "localhost",8888); InputStream is = s1.getInputStream(); DataInputStream dis = new DataInputStream(is); OutputStream os = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String info; while( true){ System.out.print( "客户说:"); info = br.readLine(); dos.writeUTF(info); if(info.equals( "bye")){ break; } info = dis.readUTF(); System.out.println( "服务器说:"+info); if(info.equals( "bye")){ break; } } dis.close(); dos.close(); s1.close(); } catch(SocketException e){ System.out.println( "网络不正常,退出"); } catch(IOException e){ e.printStackTrace(); } } }
先在控制台运行服务器程序, 然后在另一个控制台中运行客户端程序
先从客户端发送消息, 一人发送一句.