go server 和client
时间: 2023-09-20 14:03:13 浏览: 51
Go语言提供了标准库来实现服务器和客户端的开发。下面是一个简单的例子:
Server:
```go
package main
import (
"fmt"
"net"
)
func main() {
ln, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println(err)
return
}
for {
conn, err := ln.Accept()
if err != nil {
fmt.Println(err)
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
var buf [512]byte
for {
n, err := conn.Read(buf[:])
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Received message: %v", string(buf[:n]))
_, err = conn.Write(buf[:n])
if err != nil {
fmt.Println(err)
return
}
}
}
```
Client:
```go
package main
import (
"fmt"
"net"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
message := "Hello, server!"
_, err = conn.Write([]byte(message))
if err != nil {
fmt.Println(err)
return
}
var buf [512]byte
n, err := conn.Read(buf[:])
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Received message: %v", string(buf[:n]))
}
```
这个例子实现了一个简单的回显服务器。当客户端连接到服务器并发送一条消息时,服务器会将该消息回显给客户端。在真实的应用中,您需要根据需要实现更复杂的逻辑并确保安全性。