private static MyNetworkStream CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, bool unix) { EndPoint endPoint; endPoint = new IPEndPoint(ip, (int)settings.Port); Socket socket = unix ? new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP) : new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp); if (settings.Keepalive > 0) { SetKeepAlive(socket, settings.Keepalive); } try { socket.Connect(endPoint); } catch (Exception ex) { #if !NETSTANDARD1_6 socket.Close(); #else socket.Dispose(); #endif throw ex; } MyNetworkStream stream = new MyNetworkStream(socket, true); GC.SuppressFinalize(socket); GC.SuppressFinalize(stream); return(stream); }
public static MyNetworkStream CreateStream(MySqlConnectionStringBuilder settings, bool unix) { MyNetworkStream stream = null; IPAddress[] ipHE = GetHostEntry(settings.Server); foreach (IPAddress address in ipHE) { try { stream = CreateSocketStream(settings, address, unix); if (stream != null) { break; } } catch (Exception ex) { SocketException socketException = ex as SocketException; // if the exception is a ConnectionRefused then we eat it as we may have other address // to attempt if (socketException == null) { throw; } if (socketException.SocketErrorCode != SocketError.ConnectionRefused) { throw; } } } return(stream); }
private static Stream GetUnixSocketStream(MyCatConnectionStringBuilder settings) { if (Platform.IsWindows()) { throw new InvalidOperationException(Resources.NoUnixSocketsOnWindows); } MyNetworkStream s = MyNetworkStream.CreateStream(settings, true); return(s); }
private static Stream GetTcpStream(MyCatConnectionStringBuilder settings) { MyNetworkStream s = MyNetworkStream.CreateStream(settings, false); return(s); }
private static MyNetworkStream CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, bool unix) { EndPoint endPoint; endPoint = new IPEndPoint(ip, (int)settings.Port); Socket socket = unix ? new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP) : new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp); if (settings.Keepalive > 0) { SetKeepAlive(socket, settings.Keepalive); } try { socket.Connect(endPoint); } catch (Exception ex) { #if !NETSTANDARD1_6 socket.Close(); #else socket.Dispose(); #endif throw ex; } MyNetworkStream stream = new MyNetworkStream(socket, true); GC.SuppressFinalize(socket); GC.SuppressFinalize(stream); return stream; }