Go语言中,网络编程客户端开发最常用的是Dial方法,但go中同时还专门实现了TCP相关的网络编程API。
TCPConn代表一个TCP网络连接,实现了Conn接口,使用TCPConn编写服务端和客户端代码。
服务端代码:
package main
import (
"log"
"net"
)
func main() {
ip := net.ParseIP("127.0.0.1")
tcpAddr := &net.TCPAddr{
IP:ip,
Port:12345,
Zone:"tcp",
}
listener, e := net.ListenTCP("tcp", tcpAddr)
if e != nil {
log.Fatalln("tcp server error", e)
}
defer listener.Close()
bs := make([]byte,512)
for {
conn, e := listener.AcceptTCP()
if e != nil {
log.Fatalln("tcp server listener error", e)
}
conn.Read(bs)
log.Println("用户输入:",string(bs))
conn.Write([]byte("hello client"))
}
}
客户端代码:
package main
import (
"log"
"net"
)
func main() {
ip := net.ParseIP("127.0.0.1")
tcpAddr := &net.TCPAddr{
IP:ip,
Port:12345,
Zone:"tcp4",
}
conn, e := net.DialTCP("tcp", nil, tcpAddr)
if e != nil {
log.Fatalln("tcp client conn error")
}
defer conn.Close()
b := make([]byte, 512)
conn.Write([]byte("hello server"))
conn.Read(b)
log.Println(string(b))
}
server打印输出:
用户输入: hello server
client打印输出:
hello client