TCP协议
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在网络编程中,TCP协议通常用于需要保证数据完整性、顺序性和可靠性的应用场景,Golang中的net包提供了对TCP协议的支持。
1、创建TCP连接
要在Golang中创建一个TCP连接,首先需要导入net
包,然后使用Dial
函数。Dial
函数接受两个参数:第一个参数是地址(Address),第二个参数是配置(Config)。
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error:", err) return } defer conn.Close() }
2、读写数据
创建TCP连接后,可以使用conn
对象进行数据的读写操作,以下是一个简单的读取和写入数据的例子:
package main import ( "bufio" "fmt" "net" "os" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error:", err) return } defer conn.Close() go func() { writer := bufio.NewWriter(conn) _, err := writer.WriteString("Hello, server!") if err != nil { fmt.Println("Error:", err) return } err = writer.Flush() if err != nil { fmt.Println("Error:", err) return } }() reader := bufio.NewReader(conn) line, err := reader.ReadString(' ') if err != nil { fmt.Println("Error:", err) return } fmt.Println("Received from server:", line) }
3、TCP监听与关闭监听端口(Server端)
在Golang中,可以使用Listen
函数创建一个TCP监听器,然后使用Accept
函数等待客户端的连接,以下是一个简单的TCP服务器示例:
package main import ( "bufio" "fmt" "net" "os" ) func main() { listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error:", err) return } defer listener.Close() for { conn, err := listener.Accept() //阻塞等待新的连接请求到来,如果没有新的连接请求到来,那么程序将一直阻塞在这里,当有一个新的连接请求到来时,Accept方法返回一个Conn类型的指针和一个错误,这个错误可以忽略,如果没有错误发生,那么就表示成功接受到了一个新的连接请求,接下来我们就可以使用这个新的连接来发送和接收数据了,这里我们简单地向客户端发送一条消息“Hello from server”,之后就可以关闭这个连接了,但是为了能够同时处理多个客户端的请求,我们需要在一个循环里面不断地执行这样的操作,所以这里使用了for循环来不断地接受新的连接请求,在每次循环结束的时候都需要调用listener.Close()方法来关闭这个监听器,这样才能够释放掉系统资源,同时也需要在main函数的最后面加上listener.Close()来确保监听器能够被正确地关闭掉,否则的话,即使程序已经退出了main函数,监听器也还是会一直保持着开启状态,从而导致系统资源的浪费,另外需要注意的是,这里的监听地址是固定的“127.0.0.1:8080”,如果你想要让程序监听其他的IP地址或者端口号的话,你需要修改这部分代码。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/152550.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复