基于JAVA网络编程的聊天小程序
1 package com.neusoft.edu.socket; 2 import java.io.BufferedReader; 3 import java.io.IOException; 4 import java.io.InputStreamReader; 5 import java.io.PrintWriter; 6 import java.net.ServerSocket; 7 import java.net.Socket; 8 /** 9 * 服务器端代码 10 * 获取客户端发送的信息,显示并且返回对应的回复 11 * 1、创建ServerSocket对象 12 * 2、调用accept方法获取客户端连接 13 * 3、使用输入流读取客户端发送的数据 14 * 4、使用输出流向客户端写入数据 15 * 5、关闭对应的对象 16 * @author L 17 * 18 */ 19 public class ChatServer { 20 /** 21 * @param args 22 */ 23 public static void main(String[] args) { 24 try { 25 //1、创建ServerSocket对象,8875为自定义端口号 26 ServerSocket server = new ServerSocket(8857); 27 28 //简单提示 29 System.out.println("等待客户端连接……"); 30 31 //2、获取客户端连接 32 Socket client = server.accept(); 33 34 //获取客户端的相关信息 35 System.out.println(client.getInetAddress().getHostAddress() + "连接上来了……"); 36 37 //3.1、定义输入流和输出流对象 38 BufferedReader in = new BufferedReader( 39 new InputStreamReader( 40 client.getInputStream())); 41 42 //用来获取从控制台输入的数据,将该数据发送给客户端 43 BufferedReader inByServer = new BufferedReader( 44 new InputStreamReader(System.in)); 45 46 PrintWriter out = new PrintWriter(client.getOutputStream(), true); 47 48 //读取到的数据 49 String data = null; 50 String answer = null; 51 52 //循环和客户端进行通信 53 do 54 { 55 //3.2、读取客户端发送的数据 56 data = in.readLine(); 57 58 //在服务器端显示读取到的数据 59 System.out.println("客户端发送信息:" + data); 60 61 //获取服务器端要发送给客户端的信息 62 System.out.print("服务器端回复客户端:"); 63 answer = inByServer.readLine(); 64 65 //3.3、将数据写入到客户端 66 out.println(answer); 67 out.flush(); 68 }while(!"bye".equals(data)); 69 70 //4、关闭相关资源 71 out.flush(); 72 in.close(); 73 inByServer.close(); 74 out.close(); 75 76 //关闭Socket对象 77 client.close(); 78 server.close(); 79 80 System.out.println("服务器端关闭……"); 81 } catch (IOException e) { 82 // TODO Auto-generated catch block 83 e.printStackTrace(); 84 } 85 } 86 }
1 package com.neusoft.edu.socket; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.io.PrintWriter; 7 import java.net.Socket; 8 import java.net.UnknownHostException; 9 10 /** 11 * 聊天客户端 12 * 1、创建Socket对象 13 * 2、写入数据 14 * 3、读取从服务器端发来的数据 15 * 4、关闭 16 * @author L 17 * 18 */ 19 public class ChatClient { 20 21 /** 22 * @param args 23 */ 24 public static void main(String[] args) { 25 try { 26 //1、创建Socket对象,("192.168.1.107", 8857)分别为主机IP和端口号,两个类端口号要一致 27 Socket client = new Socket("192.168.1.107", 8857); 28 29 //2.1、创建输入流和输出流对象 30 BufferedReader in = new BufferedReader( 31 new InputStreamReader( 32 client.getInputStream())); 33 34 PrintWriter out = new PrintWriter(client.getOutputStream(), true); 35 36 BufferedReader inByClient = new BufferedReader( 37 new InputStreamReader(System.in)); 38 39 //服务器端发送的数据 40 String data = null; 41 //客户端向服务器端写入的数据 42 String answer = null; 43 44 do 45 { 46 //2.2、客户端的读写操作 47 System.out.print("你说:"); 48 //获取要发送给服务器端的数据 49 answer = inByClient.readLine(); 50 //向服务器端写入数据 51 out.println(answer); 52 out.flush(); 53 54 //获取服务器端发送的数据 55 data = in.readLine(); 56 //输出从服务器端获取的数据 57 System.out.println("服务器端返回信息是:" + data); 58 }while(!"bye".equals(data)); 59 60 //3、关闭 61 in.close(); 62 out.close(); 63 inByClient.close(); 64 client.close(); 65 66 System.out.println("客户端关闭……"); 67 } catch (UnknownHostException e) { 68 // TODO Auto-generated catch block 69 e.printStackTrace(); 70 } catch (IOException e) { 71 // TODO Auto-generated catch block 72 e.printStackTrace(); 73 } 74 } 75 76 }
这是个小程序,不过也包含了一些小BUG,仅供新手参考,不妥之处,还望见谅!