黑客技術入門之go實現tcp socket通信

分享黑客技術,GO、Python、Kotlin、Android、Java編程知識,科技資訊等

黑客技術入門之go實現tcp socket通信

黑客技術

前面一篇文章 介紹了python實現tcp socket通信編程,本篇文章介紹一下go語言如何實現tcp socket通信。

go語言中提供的socket編程接口主要在net包中,tcp socket編程中有兩個重要類型TCPAddr和TCPConn。

TCPAddr結構體定義如下:

黑客技術入門之go實現tcp socket通信

TCP地址

在go語言中使用ResolveTCPAddr函數可以獲取到一個TCPAddr結構體類型,源碼如下:

黑客技術入門之go實現tcp socket通信

返回的類型即是TCPAddr類型。

<code>service := ":8080"tcpAddr, err := net.ResolveTCPAddr("tcp4", service)/<code>

之後監聽TCP地址

<code>listener, err := net.ListenTCP("tcp", tcpAddr)for {conn, err := listener.Accept()if err != nil {continue}go handleClient(conn)}/<code>

等待客戶端連接,在客戶端連接之後啟動一個goroutine,處理客戶端連接。

<code>for {conn, err := listener.Accept()if err != nil {continue}go handleClient(conn)}/<code>

客戶端通過net包中DialTCP函數連接服務器

<code>conn, err := net.DialTCP("tcp", nil, tcpAddr)/<code>

之後客戶端讀取命令行輸入的文本,發送到服務端,同時讀取服務器端發送的數據。當客戶端發送quit時,客戶端連接退出。

<code>var inPutEnter stringlineReader := bufio.NewReader(os.Stdin)defer conn.Close()for {fmt.Print("input text:")inPutEnter, _ = lineReader.ReadString('\\n')if len(inPutEnter) == 1 {continue}if inPutEnter == "quit\\n" {fmt.Println("quit run")break}fmt.Printf("您輸入的是:%s", inPutEnter)_, err = conn.Write([]byte(inPutEnter))checkErrorClient(err)serverData := make([]byte, 128)lenInt, _ := conn.Read(serverData)if lenInt == 0 {fmt.Println("print >>>", lenInt)break}fmt.Println(string(serverData))}/<code>

go語言實現tcp socket通信就介紹到這裡!如果有感興趣的朋友可以在後臺私信我獲取完整源碼,私信中發送"gotserver"獲取服務器端源碼,發送"gotclient"獲取客戶端源碼。下載之後是txt格式,擴展名改成go就可以運行源碼了。

更多黑客相關技術可以查看我之前的文章,喜歡的朋友可以關注、點贊、轉發、評論!期待大家的反饋意見!

相關閱讀:


分享到:


相關文章: