Java Socket TCP programming (Server-side multithreading)

1  package com;
 2  
3  import java.io.* ;
 4  import java.net.Socket;
 5  
6  /** 
7  * Socket Client
 8  * <p>
 9  * Created by Administrator on 2018/5/2.
 10   */ 
11  public  class Client {
 12  
13      public  static  void main(String[] args) {
 14  
15          try {
 16  
17              // 1. Initialize client socket connection 
18              Socket socket = new Socket("localhost", 8888);
19 
20             // 2.client发送消息
21             OutputStream outputStream = socket.getOutputStream();
22             PrintWriter printWriter = new PrintWriter(outputStream);
23             printWriter.write("[name:jim, pwd:123]");
24             printWriter.flush();
25             socket.shutdownOutput();
26 
27             // 3.client接收消息
28             InputStream inputStream = socket.getInputStream();
29             InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
30             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
31             String str;
32             while ((str = bufferedReader.readLine()) != null) {
33                 System.out.println("I am Client, now get message from Server:" + str);
34             }
35 
36             // 4.关闭资源
37             bufferedReader.close();
38             inputStreamReader.close();
39             inputStream.close();
40 
41             printWriter.close();
42             outputStream.close();
43             socket.close();
44 
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48     }
49 }
1  package com;
 2  
3  import java.io.* ;
 4  import java.net.ServerSocket;
 5  import java.net.Socket;
 6  
7  /** 
8  * Socket Server
 9  * <p>
 10  * Created by Administrator on 2018 /5/2.
 11   */ 
12  public  class Server {
 13  
14      public  static  void main(String[] args) {
 15  
16          try {
 17  
18              // Initialize the server socket connection and listen for socket requests on port 8888
19             ServerSocket serverSocket = new ServerSocket(8888);
20 
21             System.out.println("****** I am Server, now begin to wait the client ******");
22 
23             int count = 0;
24             
25             // 处理socket请求
26             Socket socket = null;
27             while (true) {
28 
29                 socket = serverSocket.accept();
30                 ServerThread serverThread = new ServerThread(socket);
31                 System.out.println("client host address is: " + socket.getInetAddress().getHostAddress());
32                 serverThread.start();
33                 count++;
34                 System.out.println("now client count is: " + count);
35 
36             }
37         } catch (IOException e) {
38             e.printStackTrace();
39         }
40     }
41 }
 1 package com;
 2 
 3 import java.io.*;
 4 import java.net.Socket;
 5 
 6 /**
 7  * Created by Administrator on 2018/5/3.
 8  */
 9 public class ServerThread extends Thread {
10 
11     private Socket socket;
12 
13     public ServerThread(Socket socket) {
14         this.socket = socket;
15     }
16 
17     @Override
18     public void run() {
19 
20         InputStream inputStream = null;
21         InputStreamReader inputStreamReader = null;
22         BufferedReader bufferedReader = null;
23         OutputStream outputStream = null;
24         PrintWriter printWriter = null;
25 
26         try {
27 
28             // server接收消息
29             inputStream = socket.getInputStream();
30             inputStreamReader = new InputStreamReader(inputStream);
31             bufferedReader = new BufferedReader(inputStreamReader);
32 
33             String str;
34             if ((str = bufferedReader.readLine()) != null) {
35                 System.out.println("I am Server, now get message from Client: " + str);
36             }
37             socket.shutdownInput();
38 
39             // server发送消息
40             outputStream = socket.getOutputStream();
41             printWriter = new PrintWriter(outputStream);
42             printWriter.write("[welcome to you!]");
43             printWriter.flush();
44 
45         } catch (IOException e) {
46             e.printStackTrace();
47         } finally {
48             // 关闭资源
49             try {
50                 if (printWriter != null) {
51                     printWriter.close();
52                 }
53                 if (outputStream != null) {
54                     outputStream.close();
55 
56                 }
57                 if (bufferedReader != null) {
58                     bufferedReader.close();
59                 }
60                 if (inputStreamReader != null) {
61                     inputStreamReader.close();
62                 }
63                 if (inputStream != null) {
64                     inputStream.close();
65                 }
66                 if (socket != null) {
67                     socket.close();
68                 }
69             } catch (IOException e) {
70                 e.printStackTrace();
71             }
72         }
73     }
74 }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325219938&siteId=291194637