安装 go get -u github.com/xtaci/kcp-go
import (
"fmt"
"github.com/xtaci/kcp-go"
"golang.org/x/net/ipv4"
"golang.org/x/net/ipv6"
"net"
)
func server() {
udpConn, err := net.ListenUDP("udp", &net.UDPAddr{Port: 12345})
if err != nil {
fmt.Println("创建UDP连接失败:", err)
return
}
kcpConn, err := kcp.ServeConn(nil, 0, 0, udpConn)
if err != nil {
fmt.Println("创建KCP连接失败:", err)
return
}
kcpConn.SetWindowSize(4096, 4096)
kcpConn.SetNoDelay(1, 10, 2, 1)
kcpConn.SetStreamMode(true)
data := []byte("Hello, KCP!")
_, err = kcpConn.Write(data)
if err != nil {
fmt.Println("数据传输失败:", err)
return
}
kcpConn.Close()
}
func client() {
udpConn, err := net.DialUDP("udp", nil, &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 12345})
if err != nil {
fmt.Println("创建UDP连接失败:", err)
return
}
kcpConn, err := kcp.Dial(udpConn.RemoteAddr().String())
if err != nil {
fmt.Println("创建KCP连接失败:", err)
return
}
kcpConn.SetWindowSize(4096, 4096)
kcpConn.SetNoDelay(1, 10, 2, 1)
kcpConn.SetStreamMode(true)
buffer := make([]byte, 1024)
n, err := kcpConn.Read(buffer)
if err != nil {
fmt.Println("接收数据失败:", err)
return
}
fmt.Println("接收到的数据:", string(buffer[:n]))
kcpConn.Close()
}
func main() {
go server()
go client()
select {}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术