一, 服務端
package main
import (
"fmt"
"net"
)
func handleConnection(conn *net.TCPConn) {
for {
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil { //有一個前端已經斷開了
fmt.Println(err)
break
}
fmt.Println(conn.RemoteAddr().String() + " : " + string(buf[:n]))
str := "服務器收到了 :" + string(buf[:n])
conn.Write([]byte(str))
}
}
func main() {
tcpAddr, err := net.ResolveTCPAddr("tcp", ":9790")
if err != nil {
fmt.Println(err)
return
}
listener, lerr := net.ListenTCP("tcp", tcpAddr)
if lerr != nil {
fmt.Println(lerr)
return
}
for {
conn, aerr := listener.AcceptTCP()
if aerr != nil {
fmt.Println(aerr)
return
}
go handleConnection(conn)
}
}
二, 客户端
package main
import (
"bufio"
"fmt"
"log"
"net"
"os"
)
func main() {
tcpAddr, err := net.ResolveTCPAddr("tcp", ":9790")
if err != nil {
log.Fatal(err)
return
}
conn, cerr := net.DialTCP("tcp", nil, tcpAddr)
if cerr != nil {
log.Fatal(cerr)
return
}
reader := bufio.NewReader(os.Stdin) //通過控制枱輸入
for {
bytes, _, _ := reader.ReadLine()
conn.Write(bytes)
//讀取服務端返回的數據
rb := make([]byte, 1024)
rn, rerr := conn.Read(rb)
if rerr != nil {
log.Fatal(rerr)
return
}
fmt.Println(string(rb[:rn]))
}
}
三, 結果