| 
					
				 | 
			
			
				@@ -6,6 +6,7 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"time" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/v2ray/v2ray-core/common/log" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	v2net "github.com/v2ray/v2ray-core/common/net" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/v2ray/v2ray-core/transport" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/v2ray/v2ray-core/transport/hub/kcpv" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/xtaci/kcp-go" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -126,3 +127,12 @@ func DialKCP(dest v2net.Destination) (*KCPVconn, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return kcvn, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func ListenKCP(address v2net.Address, port v2net.Port) (*KCPVlistener, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	kcpconf := transport.KcpConfig 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cpip, _ := kcpv.GetChipher(kcpconf.Key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	laddr := address.String() + ":" + port.String() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	kcl, err := kcp.ListenWithOptions(kcpconf.AdvancedConfigs.Fec, laddr, cpip) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	kcvl := &KCPVlistener{lst: kcl, conf: kcpconf} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return kcvl, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |