用go语言raw实现tcps
以下是一个使用Go语言实现TCP服务器和客户端的示例代码:
服务器端(server.go):
package main
import (
"fmt"
"net"
)
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:", string(buffer[:n]))
conn.Write([]byte("Message received\n"))
}
}
func main() {
listener, err := net.Listen("tcp", "localhost:12345")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Listening on localhost:12345")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting connection:", err.Error())
return
}
fmt.Println("Accepted connection from:", conn.RemoteAddr().String())
go handleConnection(conn)
}
}
客户端(client.go):
package main
import (
"fmt"
"net"
)
func main() {
conn, err := net.Dial("tcp", "localhost:12345")
if err != nil {
fmt.Println("Error connecting:", err.Error())
return
}
defer conn.Close()
message := []byte("Hello, server!")
_, err = conn.Write(message)
if err != nil {
fmt.Println("Error sending message:", err.Error())
return
}
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading response:", err.Error())
return
}
fmt.Println("Server response:", string(buffer[:n]))
}
要运行以上代码,您可以在终端中执行以下命令:
go run server.go
然后,打开另一个终端窗口,并执行以下命令:
go run client.go
客户端将发送消息到服务器,服务器将接收并回复消息
原文地址: http://www.cveoy.top/t/topic/iYWA 著作权归作者所有。请勿转载和采集!