初学了下JavaSE的网络编程这一块,写了个命令行的聊天小程序,只能一人一句聊,并且客户端先开始聊,地址固定为127.0.0.1了。过几天再写个图形界面的。
服务器端:
01 import java.io.*; 02 import java.net.*; 03 public class ChatServer { 04 public static void main(String[] args) { 05 try { 06 ServerSocket ss = new ServerSocket(6666); 07 while (true) { 08 Socket s = ss.accept(); 09 System.out.println("Connected"); 10 DataOutputStream dos = new DataOutputStream(s.getOutputStream()); 11 DataInputStream dis = new DataInputStream(s.getInputStream()); 12 BufferedReader br = new BufferedReader(new InputStreamReader( 13 System.in)); 14 String input = null; 15 String in = null; 16 while ((in = dis.readUTF()) != null) { 17 System.out.println("Client:" + in); 18 if ((input = br.readLine()).equals("bye")) { 19 System.exit(0); 20 } 21 dos.writeUTF(input); 22 dos.flush(); 23 System.out.println("Server:" + input); 24 } 25 dos.close(); 26 dis.close(); 27 br.close(); 28 s.close(); 29 } 30 } catch (IOException e) { 31 System.exit(-1); 32 } 33 } 34 } |
客户端:
01 import java.io.*; 02 import java.net.*; 03 04 public class ChatClient { 05 public static void main(String[] args) { 06 try { 07 Socket s = new Socket("127.0.0.1", 6666); 08 System.out.println("Connected"); 09 DataInputStream dis = new DataInputStream(s.getInputStream()); 10 DataOutputStream dos = new DataOutputStream(s.getOutputStream()); 11 BufferedReader br = new BufferedReader(new InputStreamReader( 12 System.in)); 13 String input = null; 14 while (!(input = br.readLine()).equals("bye")) { 15 dos.writeUTF(input); 16 dos.flush(); 17 System.out.println("Client:" + input); 18 System.out.println("Server:" + dis.readUTF()); 19 } 20 dis.close(); 21 dos.close(); 22 br.close(); 23 s.close(); 24 } catch (UnknownHostException e) { 25 System.out.println("Host not found!"); 26 System.exit(-1); 27 } catch (IOException e) { 28 System.exit(-1); 29 } 30 } 31 } |