feat:KCP协议

This commit is contained in:
nnbcccscdscdsc
2026-03-24 21:09:06 +08:00
parent 290ba18962
commit be013b701b
20 changed files with 2284 additions and 16 deletions

View File

@@ -0,0 +1,24 @@
//go:build linux
package transport
import (
"fmt"
"syscall"
)
// udpBindDeviceControl 返回一个 Control 函数,用于在 Linux 上将 UDP socket 绑定到指定网卡设备。
func udpBindDeviceControl(device string) (func(string, string, syscall.RawConn) error, error) {
return func(_, _ string, rawConn syscall.RawConn) error {
var bindErr error
if err := rawConn.Control(func(fd uintptr) {
bindErr = syscall.BindToDevice(int(fd), device)
}); err != nil {
return err
}
if bindErr != nil {
return fmt.Errorf("transport: bind device %s: %w", device, bindErr)
}
return nil
}, nil
}