golang net tcp

admin 2025-01-08 21:59:18 编程 来源:ZONE.CI 全球网 0 阅读模式
用golang编写网络程序是一种非常常见的任务。在golang中,我们可以使用net包提供的TCP功能来实现基于TCP协议的网络通信。本文将介绍如何使用golang的net包来编写TCP服务器和客户端程序。

TCP服务器

在golang中,创建一个TCP服务器非常简单。以下是一个简单的TCP服务器的代码示例:

```go package main import ( "fmt" "net" ) func handleClient(conn net.Conn) { defer conn.Close() buf := make([]byte, 1024) for { // 从客户端接收数据 n, err := conn.Read(buf) if err != nil { fmt.Println("Error reading:", err.Error()) return } // 打印收到的数据 fmt.Println("Received data:", string(buf[:n])) // 向客户端发送响应 _, err = conn.Write([]byte("Message received.")) if err != nil { fmt.Println("Error writing:", err.Error()) return } } } func main() { // 监听端口 ln, err := net.Listen("tcp", ":8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } fmt.Println("Server listening on port 8080...") // 处理客户端连接 for { conn, err := ln.Accept() if err != nil { fmt.Println("Error accepting connection:", err.Error()) continue } // 在不同的Goroutine中处理每个连接 go handleClient(conn) } } ``` 这段代码创建一个TCP服务器,并监听8080端口。当客户端连接到该端口时,服务器会接受连接并在一个单独的Goroutine中处理该连接。处理函数`handleClient`负责接收客户端发送的消息并向客户端发送响应。

TCP客户端

编写一个TCP客户端也非常简单。以下是一个简单的TCP客户端代码示例:

```go package main import ( "fmt" "net" ) func main() { // 连接服务器 conn, err := net.Dial("tcp", "localhost:8080") if err != nil { fmt.Println("Error connecting:", err.Error()) return } defer conn.Close() // 发送消息给服务器 _, err = conn.Write([]byte("Hello, server!")) if err != nil { fmt.Println("Error writing:", err.Error()) return } // 接收服务器的响应 buf := make([]byte, 1024) n, err := conn.Read(buf) if err != nil { fmt.Println("Error reading:", err.Error()) return } // 打印服务器的响应 fmt.Println("Received response:", string(buf[:n])) } ``` 这段代码创建一个TCP客户端,并尝试连接到指定的服务器地址和端口。如果连接成功,客户端会向服务器发送一条消息,并等待服务器的响应。一旦收到响应,客户端会打印出来。

总结

本文介绍了如何使用golang的net包来编写基于TCP协议的服务器和客户端程序。通过使用net包提供的函数和方法,我们可以轻松地创建TCP连接、发送和接收数据。

当然,这只是一个简单的示例,实际项目中可能还会有更多的功能需求。不过通过本文的介绍,你应该能够理解如何使用golang的net包来开始编写自己的网络程序。

weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
golang net tcp 编程

golang net tcp

用golang编写网络程序是一种非常常见的任务。在golang中,我们可以使用net包提供的TCP功能来实现基于TCP协议的网络通信。本文将介绍如何使用gola
golang原生日志 编程

golang原生日志

Go是一种开源的编程语言,由Google开发。它具有简洁、高效、跨平台等特点,逐渐成为了许多开发者的首选语言。在Go语言中,日志系统是非常重要的组成部分,可以帮
golang实现子进程通信 编程

golang实现子进程通信

最近几年,Golang(又称Go)已经成为了云原生应用开发的主流语言之一。其简洁、高效以及并发特性使得Go在大数据处理和分布式系统开发中备受推崇。而进程间通信作
怎么把golang编译为exe 编程

怎么把golang编译为exe

如何将Golang代码编译为可执行的EXE文件 在Golang开发中,我们通常使用go build命令将代码编译成可执行文件,以便在目标计算机上运行。这篇文章将
评论:0   参与:  0