1.服務端監聽並處理接收信息
package main
import (
"fmt"
"io"
"net"
)
func process(conn net.Conn){
defer conn.Close()
for {
fmt.Println("服務器的等 待客戶端寫入……")
readByte :=make([]byte,2048)
// 注意這裏是將數據讀取到readByte byte數組中,讀取個數爲n,並不是上面的2048
n,err :=conn.Read(readByte)
if err==io.EOF{
fmt.Println("客戶端關閉,服務器關閉")
return
}
if err!=nil{
fmt.Println("服務器的Reader err=",err)
return
}
// 最終獲取到的數據, 取數時要注意,是0~n 個不是2048,因爲最終讀取到的是n
readStr :=string(readByte[:n])
fmt.Println("服務器端讀取到數據",readStr)
}
}
func main(){
fmt.Println("服務器端開始監聽^……")
// 服務端監聽 8090
listen,err :=net.Listen("tcp","127.0.0.1:8090")
if err!=nil{
fmt.Println("監聽127.0.0.1:8090出錯")
return
}
defer listen.Close()
for{
fmt.Println("等待客戶端·連接……")
conn,err :=listen.Accept()
if err!=nil{
fmt.Println("接收出錯",err)
}
fmt.Println("客戶端連接成功……")
fmt.Println(conn)
go process(conn)
}
}
2.客戶端連接服務端併發送信息
package main
import (
"fmt"
"net"
)
func main() {
// 建立客戶端連接
conn,err :=net.Dial("tcp","127.0.0.1:8090")
if err !=nil{
fmt.Println("建立連接120.0.0.1:8090出錯",err)
return // 注意 如果連接失敗,這裏要失敗
}
fmt.Println("連接120.0.0.1:8090成功!",err)
defer conn.Close()
// 發送信息
whriteStr :="hello word,你好!"
// 通過conn連接發送信息
n,err :=conn.Write([]byte(whriteStr))
if err!=nil{
fmt.Println("conn whrite err=",err)
}
fmt.Println("客戶端發送了",n,"個字節並退出")
}