golang网络编程学习-TCP
网络编程主要的内容是:
1.TCP网络编程
2.http服务
3.rpc服务
4.websocket服务
golang网络编程学习-TCP
一、TCP/IP
TCP/IP是一种协议簇,它是网络通信的基础,是互联网的核心协议,负责数据在网络中的传输。它包括TCP和IP两个协议,TCP提供数据报传输的可靠性,IP则负责数据报传输的转发。
二、Go中的TCP编程
Go语言中的net包提供了TCP编程的相关API,主要包括以下几个函数:
net.DialTCP():创建一个TCP连接;
net.ListenTCP():监听一个TCP端口;
net.TCPConn():表示一个TCP连接。
下面我们将分别介绍如何使用这些函数进行TCP编程。
一、server端
package mainimport ("bufio""fmt""net"
)func handleClient(conn *net.TCPConn) {defer conn.Close()// 读取客户端请求reader := bufio.NewReader(conn)req, err := reader.ReadString('\n')if err != nil {fmt.Println(err)return}fmt.Println("接收到的请求是:", req)//发送响应数据writer := bufio.NewWriter(conn)resp := "Hello,client!\n"_, err = writer.WriteString(resp)if err != nil {fmt.Println(err)return}writer.Flush()}func main() {tcpListenner, err := net.ListenTCP("tcp", &net.TCPAddr{IP: net.IPv4(0, 0, 0, 0),Port: 9999,})if err != nil {fmt.Println(err)return}defer tcpListenner.Close()fmt.Println("监听端口:", 9999)for {conn, err := tcpListenner.AcceptTCP()if err != nil {fmt.Println(err)continue}fmt.Println("新的客户端连接...")go handleClient(conn)}
}
二、客户端
package mainimport ("bufio""fmt""net"
)func main() {conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1),Port: 9999,})if err != nil {fmt.Println(err)return}defer conn.Close()// 发送数据请求writer := bufio.NewWriter(conn)req := "Hello,server!\n"_, err = writer.WriteString(req)if err != nil {fmt.Println(err)return}writer.Flush()// 接受响应数据reader := bufio.NewReader(conn)resp, err := reader.ReadString('\n')if err != nil {fmt.Println(err)return}fmt.Println("接收到达额数据是", resp)
}
不过多的解释了,都是在注释里了