本文最后更新于:2025年10月27日 下午
                  
                
              
            
            
              
                
                这篇文章主要用来总结Java在网络编程中的知识点
下面是一个Java客户端与服务端通信的样例程序
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 
 | public class Server {
 public static void main(String[] args) throws IOException {
 ServerSocket ss = new ServerSocket(6666);
 System.out.println("Server start listening...");
 for (; ; ) {
 Socket sock = ss.accept();
 System.out.println("Receviced package from " + sock.getRemoteSocketAddress());
 Thread t = new Handler(sock);
 t.start();
 }
 }
 }
 
 class Handler extends Thread {
 Socket sock;
 
 public Handler(Socket sock) {
 this.sock = sock;
 }
 
 @Override
 public void run() {
 try (InputStream input = this.sock.getInputStream()) {
 try (OutputStream output = this.sock.getOutputStream()) {
 handle(input, output);
 }
 } catch (Exception e) {
 try {
 this.sock.close();
 } catch (IOException ioe) {
 }
 System.out.println("Client disconnected.");
 }
 }
 
 private void handle(InputStream input, OutputStream output) throws IOException {
 var writer = new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));
 var reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
 writer.write("hello\n");
 writer.flush();
 for (; ; ) {
 String s = reader.readLine();
 if (s.equals("bye")) {
 writer.write("bye\n");
 writer.flush();
 break;
 }
 writer.write("ok: " + s + "\n");
 writer.flush();
 }
 }
 }
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | public class client {
 public static void main(String[] args) throws IOException {
 Socket sock = new Socket("localhost", 6666);
 try (InputStream input = sock.getInputStream()){
 try(OutputStream output = sock.getOutputStream()){
 handle(input, output);
 }
 }
 }
 private static void handle(InputStream input, OutputStream output) throws IOException{
 var writer = new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));
 var reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
 Scanner scanner = new Scanner(System.in);
 System.out.println("[server]: "+ reader.readLine());
 for(;;){
 System.out.print(">>>");
 String s = scanner.nextLine();
 writer.write(s);
 writer.newLine();
 writer.flush();
 String resp = reader.readLine();
 System.out.println("<<<" + resp);
 if(resp.equals("bye"))  break;
 }
 }
 }
 
 | 
实现功能为服务端与客户端相互通信,收到bye信号后断开连接,如图所示
