public Socks5ClientRequestReply Bind(Socks5AddressType addressType, ushort preferPort = 0) { if (addressType != Socks5AddressType.IPv4 && addressType != Socks5AddressType.IPv6) { throw new Socks5Exception("You can request only IPv4/IPv6 binding, not hostname"); } if (!_established) { ConnectCore(); } return(RemoteBind(addressType, preferPort)); }
protected Socks5ClientRequestReply RemoteBind(Socks5AddressType addressType, ushort preferPort) { if (addressType != Socks5AddressType.IPv4 && addressType != Socks5AddressType.IPv6) { throw new Socks5Exception("You can request only IPv4/IPv6 binding, not hostname"); } Socks5ClientRequest request = new Socks5ClientRequest { Command = Socks5Command.TCPBind, AddressType = addressType, DestinationPort = preferPort }; if (addressType == Socks5AddressType.IPv4) { request.DestinationAddress = "0.0.0.0"; } else if (addressType == Socks5AddressType.IPv6) { request.DestinationAddress = "::"; } return(RemoteBindCore(request)); }