给一个gplang写的TCP例子
时间: 2024-04-15 08:28:28 浏览: 22
以下是一个用Go语言编写的简单的TCP服务器和客户端的示例:
服务器端代码(server.go):
```go
package main
import (
"fmt"
"net"
)
func main() {
// 监听端口
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Server started. Listening on localhost:8080")
// 接受客户端连接
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting connection:", err.Error())
return
}
// 处理连接
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
buffer := make([]byte, 1024)
for {
// 读取客户端发送的数据
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
// 打印客户端发送的数据
fmt.Println("Received message:", string(buffer[:n]))
// 向客户端发送响应
conn.Write([]byte("Message received."))
}
}
```
客户端代码(client.go):
```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()
message := "Hello, server!"
conn.Write([]byte(message))
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading response:", err.Error())
return
}
fmt.Println("Response from server:", string(buffer[:n]))
}
```
以上代码演示了一个简单的TCP服务器和客户端的通信过程。服务器监听本地8080端口,接受客户端的连接并处理数据。客户端连接服务器并发送一条消息,然后接收服务器的响应并打印出来。
请注意,在实际开发中,我们还需要考虑错误处理、并发连接、数据格式等更多的细节。以上代码只是一个基本示例,供参考。