下面是一个示例代码,用于建立基于物理层的网络通信的 Golang 实现:
package main
import (
"fmt"
"log"
"net"
)
func main() {
// 定义本地 IP 地址和端口号
localIP := "127.0.0.1"
localPort := 8888
// 创建本地 TCP 监听器
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", localIP, localPort))
if err != nil {
log.Fatal("无法启动监听器:", err)
}
defer listener.Close()
fmt.Println("等待连接...")
for {
// 接受来自客户端的连接请求
conn, err := listener.Accept()
if err != nil {
log.Fatal("无法接受连接:", err)
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
fmt.Println("新连接已建立。")
buffer := make([]byte, 1024)
for {
bytesRead, err := conn.Read(buffer)
// 处理错误和数据读取完成的情况
if err != nil {
log.Println("连接关闭或读取出错:", err)
break
}
// 处理接收到的数据
data := buffer[:bytesRead]
fmt.Printf("收到消息:%s\n", string(data))
// 发送响应给客户端
response := "收到消息:" + string(data)
_, err = conn.Write([]byte(response))
if err != nil {
log.Println("发送响应失败:", err)
break
}
}
fmt.Println("连接已关闭。")
}
以上代码演示了一个简单的基于物理层的网络通信服务器,它监听本地 IP 地址和端口号,并接受客户端连接。当客户端发送数据时,服务器将接收并打印该数据,并发送响应给客户端。
请注意,在实际情况中,你可能需要考虑更多的错误处理、并发连接管理、协议解析等方面的内容。此代码仅作为一个简单示例来帮助你入门。
内容由零声教学AI助手提供,问题来源于学员提问