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编程。
文章来源:https://www.toymoban.com/news/detail-578183.html
一、server端
package main
import (
"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 main
import (
"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)
}
不过多的解释了,都是在注释里了文章来源地址https://www.toymoban.com/news/detail-578183.html
到了这里,关于golang网络编程学习-TCP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!