<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### 4.1 Zinx-V0.4增添全局配置代碼實現 我們先做一個簡單的加載配置模塊,要加載的配置文件的文本格式,就選擇比較通用的`json`格式,配置信息暫時如下: > zinx.json ```json { "Name":"demo server", "Host":"127.0.0.1", "TcpPort":7777, "MaxConn":3 } ``` 現在我們需要建立一個全局配置信息的對象 ##### A\) 創建全局參數文件 創建`zinx/utils`文件夾,在下面創建`globalobj.go`文件,暫時編寫如下。 > zinx/utils/globalobj.go ```go package utils import ( "encoding/json" "io/ioutil" "zinx/ziface" ) /* 存儲一切有關Zinx框架的全局參數,供其他模塊使用 一些參數也可以通過 用戶根據 zinx.json來配置 */ type GlobalObj struct { TcpServer ziface.IServer //當前Zinx的全局Server對象 Host string //當前服務器主機IP TcpPort int //當前服務器主機監聽端口號 Name string //當前服務器名稱 Version string //當前Zinx版本號 MaxPacketSize uint32 //都需數據包的最大值 MaxConn int //當前服務器主機允許的最大鏈接個數 } /* 定義一個全局的對象 */ var GlobalObject *GlobalObj ``` 我們在全局定義了一個`GlobalObject`對象,目的就是讓其他模塊都能訪問到里面的參數。 ##### B\) 提供init初始化方法 然后我們提供一個`init()`方法,目的是初始化`GlobalObject`對象,和加載服務端應用配置文件`conf/zinx.json` > zinx/utils/globalobj.go ```go //讀取用戶的配置文件 func (g *GlobalObj) Reload() { data, err := ioutil.ReadFile("conf/zinx.json") if err != nil { panic(err) } //將json數據解析到struct中 //fmt.Printf("json :%s\n", data) err = json.Unmarshal(data, &GlobalObject) if err != nil { panic(err) } } /* 提供init方法,默認加載 */ func init() { //初始化GlobalObject變量,設置一些默認值 GlobalObject = &GlobalObj{ Name: "ZinxServerApp", Version: "V0.4", TcpPort: 7777, Host: "0.0.0.0", MaxConn: 12000, MaxPacketSize:4096, } //從配置文件中加載一些用戶配置的參數 GlobalObject.Reload() } ``` ##### C\) 硬參數替換與Server初始化參數配置 > zinx/znet/server.go ```go /* 創建一個服務器句柄 */ func NewServer () ziface.IServer { //先初始化全局配置文件 utils.GlobalObject.Reload() s:= &Server { Name :utils.GlobalObject.Name,//從全局參數獲取 IPVersion:"tcp4", IP:utils.GlobalObject.Host,//從全局參數獲取 Port:utils.GlobalObject.TcpPort,//從全局參數獲取 Router: nil, } return s } ``` 我們未來方便驗證我們的參數已經成功被價值,在`Server.Start()`方法中加入幾行調試信息 > zinx/znet/server.go ```go //開啟網絡服務 func (s *Server) Start() { fmt.Printf("[START] Server name: %s,listenner at IP: %s, Port %d is starting\n", s.Name, s.IP, s.Port) fmt.Printf("[Zinx] Version: %s, MaxConn: %d, MaxPacketSize: %d\n", utils.GlobalObject.Version, utils.GlobalObject.MaxConn, utils.GlobalObject.MaxPacketSize) //... //... } ``` 當然還有一些其他的之前寫死的數值,均可以在配置文件配置,用全局參數替換,這里不一一列舉。 當前zinx框架目錄結構 ```bash ├── README.md ├── utils │?? └── globalobj.go ├── ziface │?? ├── iconnnection.go │?? ├── irequest.go │?? ├── irouter.go │?? └── iserver.go └── znet ├── connection.go ├── request.go ├── router.go ├── server.go └── server_test.go ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看