<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國際加速解決方案。 廣告
                #### 3.5 使用Zinx-V0.3完成應用程序 接下來我們在基于Zinx寫服務器,就可以配置一個簡單的路由功能了。 ##### A\) 測試基于Zinx完成的服務端應用 Server.go ```go package main import ( "fmt" "zinx/ziface" "zinx/znet" ) //ping test 自定義路由 type PingRouter struct { znet.BaseRouter //一定要先基礎BaseRouter } //Test PreHandle func (this *PingRouter) PreHandle(request ziface.IRequest) { fmt.Println("Call Router PreHandle") _, err := request.GetConnection().GetTCPConnection().Write([]byte("before ping ....\n")) if err !=nil { fmt.Println("call back ping ping ping error") } } //Test Handle func (this *PingRouter) Handle(request ziface.IRequest) { fmt.Println("Call PingRouter Handle") _, err := request.GetConnection().GetTCPConnection().Write([]byte("ping...ping...ping\n")) if err !=nil { fmt.Println("call back ping ping ping error") } } //Test PostHandle func (this *PingRouter) PostHandle(request ziface.IRequest) { fmt.Println("Call Router PostHandle") _, err := request.GetConnection().GetTCPConnection().Write([]byte("After ping .....\n")) if err !=nil { fmt.Println("call back ping ping ping error") } } func main(){ //創建一個server句柄 s := znet.NewServer("[zinx V0.3]") s.AddRouter(&PingRouter{}) //2 開啟服務 s.Serve() } ``` 我們這里自定義了一個類似Ping操作的路由,就是當客戶端發送數據,我們的處理業務就是返回給客戶端"ping...ping..ping..", 為了測試,當前路由也同時實現了PreHandle和PostHandle兩個方法。實際上Zinx會利用模板的設計模式,依次在框架中調用`PreHandle`、`Handle`、`PostHandle`三個方法。 ##### B\) 啟動Server.go ```bash go run Server.go ``` ##### C\) 客戶端應用測試程序 和之前的Client.go一樣 沒有改變 ```go package main import ( "fmt" "net" "time" ) /* 模擬客戶端 */ func main() { fmt.Println("Client Test ... start") //3秒之后發起測試請求,給服務端開啟服務的機會 time.Sleep(3 * time.Second) conn,err := net.Dial("tcp", "127.0.0.1:7777") if err != nil { fmt.Println("client start err, exit!") return } for { _, err := conn.Write([]byte("Zinx V0.3")) if err !=nil { fmt.Println("write error err ", err) return } buf :=make([]byte, 512) cnt, err := conn.Read(buf) if err != nil { fmt.Println("read buf error ") return } fmt.Printf(" server call back : %s, cnt = %d\n", buf, cnt) time.Sleep(1*time.Second) } } ``` ##### D\) 啟動Client.go ```bash go run Client.go ``` 運行結果如下: 服務端: ```bash $ go run Server.go Add Router succ! [START] Server listenner at IP: 0.0.0.0, Port 7777, is starting start Zinx server [zinx V0.3] succ, now listenning... Reader Goroutine is running Call Router PreHandle Call PingRouter Handle Call Router PostHandle Call Router PreHandle Call PingRouter Handle Call Router PostHandle Call Router PreHandle Call PingRouter Handle Call Router PostHandle Call Router PreHandle Call PingRouter Handle Call Router PostHandle Call Router PreHandle Call PingRouter Handle Call Router PostHandle ... ``` 客戶端: ```bash $ go run Client.go Client Test ... start server call back : before ping .... , cnt = 17 server call back : ping...ping...ping After ping ..... , cnt = 36 server call back : before ping .... ping...ping...ping After ping ..... , cnt = 53 server call back : before ping .... ping...ping...ping After ping ..... , cnt = 53 server call back : before ping .... ping...ping...ping After ping ..... , cnt = 53 ... ``` 現在Zinx框架已經有路由功能了,雖然說目前只能配置一個,不過不要著急,很快我們會增加配置多路由的能力。
                  <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>

                              哎呀哎呀视频在线观看