| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package kcp
- import (
- "net"
- "sync/atomic"
- "v2ray.com/core/common/dice"
- "v2ray.com/core/common/log"
- v2net "v2ray.com/core/common/net"
- "v2ray.com/core/transport/internet"
- )
- var (
- globalConv = uint32(dice.Roll(65536))
- )
- func DialKCP(src v2net.Address, dest v2net.Destination) (internet.Connection, error) {
- dest.Network = v2net.Network_UDP
- log.Info("KCP|Dialer: Dialing KCP to ", dest)
- conn, err := internet.DialToDest(src, dest)
- if err != nil {
- log.Error("KCP|Dialer: Failed to dial to dest: ", err)
- return nil, err
- }
- cpip, err := effectiveConfig.GetAuthenticator()
- if err != nil {
- log.Error("KCP|Dialer: Failed to create authenticator: ", err)
- return nil, err
- }
- conv := uint16(atomic.AddUint32(&globalConv, 1))
- session := NewConnection(conv, conn, conn.LocalAddr().(*net.UDPAddr), conn.RemoteAddr().(*net.UDPAddr), cpip)
- session.FetchInputFrom(conn)
- return session, nil
- }
- func init() {
- internet.KCPDialer = DialKCP
- }
|