Golang實現簡單tcp伺服器01 -- 概述

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

概述

Golang作為一門近些年來非常風光的開發語言, 其實用範圍很廣, 圖形介面, web架構, 映像引擎等等.
由於其語言特性簡化了並發/多核的開發, 受到了很大的關注. 而使用它進行伺服器開發, 也是非常高校而簡潔的.
廢話不多說, 本項目實踐的目的是使用golang開發一個簡單的基於tcp協議的伺服器/用戶端.

預備知識

首先, 我們需要瞭解一下golang下的如下包與特性:

goroutine

goroutine是一種輕量型的線程, 作為golang語言的語言特性, 可以很簡單的在golang中進行多線程的開發. 利用go關鍵字, 我們能把任何一個方法/函數, 放在一個新的goroutine裡執行.
實驗01:

在**實驗環境**的**主資料夾**裡, 建立一個名為test.go的文字文件, 並開始編寫以下代碼

package main  import (      "fmt"  )  var quit chan bool = make(chan bool)  func main() {      go testGorountine()      <-quit  }  func testGorountine() {      for i := 0; i < 10; i++ {         fmt.Println("Hello world!")      }      quit <- true  }  

然後, 開啟xFce終端, 鍵入命令

go run test.go

我們就會看到終端的輸出, 可以看到10行“hello world”. 這裡, 我們的hello world程式就是利用了gorountine建立了一個多線程/協程程式, 然後利用channel等待開啟的協程處理完畢, 才結束主線程.

net包

在net包中, 提供了常用網路I/O操作的api, 包括我們的實驗中需要用到的, Listen, Accept, Write, Read等方法. 具體參考連結:http://godoc.golangtc.com/pkg/net/

bufio包

bufio包則提供了一套有緩衝的I/O讀寫操作的方法, 在我們的伺服器與用戶端進行資料通訊時, 會用到. 參考連結:http://godoc.golangtc.com/pkg/bufio/

然後, 還需要對**長串連的TCP伺服器**與用戶端通訊有個基本的認識:
client向server發起串連,server接受client串連,雙方建立串連。Client與server完成一次讀寫之後,它們之間的串連並不會主動關閉,後續的讀寫操作會繼續使用這個串連。 關於這個概念, 網上有很多參考資料, 如果還不清楚, 隨便google一下~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.