TCP简介
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它是互联网最基本的传输协议,负责在两台计算机之间建立可靠的连接,确保数据包按照顺序、无误地传输,TCP协议的工作原理是通过三次握手建立连接,然后通过四次挥手断开连接,TCP协议的优点是可靠性高,能够保证数据包的完整性和顺序性,但缺点是效率较低,因为它需要等待确认信息才能继续发送下一个数据包。
Golang中的TCP编程基础
1、创建TCP监听器
在Golang中,我们可以使用net
包来创建TCP监听器,以下是一个简单的示例:
package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", "localhost:8080") if err != nil { fmt.Println("Error listening:", err) return } defer listener.Close() }
2、接受TCP连接
要接受一个TCP连接,我们需要调用listener.Accept()
方法,以下是一个简单的示例:
package main import ( "fmt" "net" "os" ) func main() { listener, err := net.Listen("tcp", "localhost:8080") if err != nil { fmt.Println("Error listening:", err) return } defer listener.Close() for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err) continue } go handleConnection(conn) } }
3、读取和写入TCP连接
要从一个TCP连接中读取数据,我们可以使用conn.Read()
方法;要向一个TCP连接中写入数据,我们可以使用conn.Write()
方法,以下是一个简单的示例:
package main import ( "bufio" "fmt" "net" "os" ) func handleConnection(conn net.Conn) { reader := bufio.NewReader(conn) writer := bufio.NewWriter(conn) defer writer.Flush() // 确保所有数据都已发送到客户端 defer conn.Close() // 在处理完数据后关闭连接,以便接收新的连接请求 for { message, err := reader.ReadString(' ') // 读取一行数据,直到遇到换行符(表示消息结束)为止 if err != nil { break // 如果发生错误,跳出循环并关闭连接(客户端意外关闭了连接) } else if len(message) == 0 { // 如果收到空消息,也跳出循环并关闭连接(客户端意外关闭了连接) break // ...或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换行符,也跳出循环并关闭连接(客户端意外关闭了连接) ... 或者如果收到的消息只包含换形符^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^r ", err) { // 如果读取的数据不完整或格式错误(消息被截断或格式错误),则跳出循环并关闭连接(客户端意外关闭了连接),否则继续处理消息。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/152964.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复