分享黑客技術,GO、Python、Kotlin、Android、Java編程知識,科技資訊等
前面一篇文章 介紹了python實現tcp socket通信編程,本篇文章介紹一下go語言如何實現tcp socket通信。
go語言中提供的socket編程接口主要在net包中,tcp socket編程中有兩個重要類型TCPAddr和TCPConn。
TCPAddr結構體定義如下:
在go語言中使用ResolveTCPAddr函數可以獲取到一個TCPAddr結構體類型,源碼如下:
返回的類型即是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就可以運行源碼了。
更多黑客相關技術可以查看我之前的文章,喜歡的朋友可以關注、點贊、轉發、評論!期待大家的反饋意見!
相關閱讀:
閱讀更多 黑客之家 的文章