Go 學習筆記14.tcp服務

tcp-server.go

// 收到什麼發回去什麼

package main

import (
	"fmt"
	"log"
	"net"
)

func main() {
	// 1.建立監聽,綁定端口
	tcp_server,err :=net.Listen("tcp",":8888")
	if err != nil {
		log.Panic("Failed to Listen",err)
	}
	// 4.收尾工作
	defer tcp_server.Close()

	// 2.等待新連接 併發
	for {
		conn,err :=tcp_server.Accept() //阻塞等待
		if err != nil {
			fmt.Println("Failed to Accept",err) // 這裏不能終止服務,提示就可以
			continue
		}

		// 3.用新連接通信
		go cli_conn(conn)

	}

}


// 處理消息的函數
func cli_conn(conn net.Conn) {
	defer conn.Close()
	fmt.Println("localaddr:",conn.LocalAddr())
	fmt.Println("localaddr:",conn.RemoteAddr())
	//循環收發消息
	buf := make([]byte,256)
	for {
		// 獲取消息
		n,err := conn.Read(buf) // 數據存在buf中,n是讀的數據大小
		if err != nil {
			fmt.Println("Failed to Read",err)
			break
		}
		// 返回消息
		fmt.Print("Send Response:",string(buf[:n]))
		conn.Write(buf[:n])

	}
}

客戶端

# yum install nc
nc ip port
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章