打包之后,获取端口号会和他人冲突,所以我们要设置端口(port)可以改变
    我们可以将要用到的端口号存在文件中,启动时将文件内容读取到缓存中,之后使用,这样如果要改变端口号可以直接修改文件
    改变的代码部分:

    1. package server;
    2. import java.io.FileReader;
    3. import java.io.IOException;
    4. import java.util.Enumeration;
    5. import java.util.HashMap;
    6. import java.util.Properties;
    7. public class ServerFileReader {//在系统启动时,读取文件server.properties中的内容
    8. private static HashMap<String,String> portMap=new HashMap<>();
    9. static {
    10. try {
    11. Properties properties=new Properties();
    12. properties.load(new FileReader("src//server.properties"));
    13. Enumeration enumeration= properties.propertyNames();
    14. while(enumeration.hasMoreElements()){
    15. String key=(String)enumeration.nextElement();
    16. String value=properties.getProperty(key);
    17. portMap.put(key,value);
    18. }
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. }
    22. }
    23. public static String getPortMap(String key){
    24. return portMap.get(key);
    25. }
    26. }
    1. package server;
    2. import java.net.ServerSocket;
    3. import java.net.Socket;
    4. public class Server {
    5. public void startServer(){
    6. try {
    7. System.out.println("====启动服务====");
    8. String port=ServerFileReader.getPortMap("port");
    9. //自己创建服务
    10. ServerSocket server=new ServerSocket(Integer.parseInt(port));
    11. while (true){
    12. //等待某一个客户端过来连接
    13. Socket socket=server.accept();//要想同时很多用户访问,可以用多线程来控制
    14. new ServerHandler(socket).start();
    15. }
    16. }catch (Exception e){
    17. e.printStackTrace();
    18. }
    19. }
    20. }

    其余代码和(4)一样
    请求响应流程.jpg