Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ConnectAsync() [8/11]

bool System.Net.Sockets.Socket.ConnectAsync ( SocketAsyncEventArgs e,
bool userSocket,
bool saeaCancelable )
inlinepackage

Definition at line 2827 of file Socket.cs.

2828 {
2830 if (e == null)
2831 {
2832 throw new ArgumentNullException("e");
2833 }
2834 if (e.HasMultipleBuffers)
2835 {
2836 throw new ArgumentException(System.SR.net_multibuffernotsupported, "BufferList");
2837 }
2838 if (e.RemoteEndPoint == null)
2839 {
2840 throw new ArgumentNullException("remoteEP");
2841 }
2842 if (_isListening)
2843 {
2845 }
2846 if (_isConnected)
2847 {
2848 throw new SocketException(10056);
2849 }
2850 EndPoint remoteEP = e.RemoteEndPoint;
2851 if (remoteEP is DnsEndPoint dnsEndPoint)
2852 {
2853 if (System.Net.NetEventSource.Log.IsEnabled())
2854 {
2856 }
2857 if (dnsEndPoint.AddressFamily != 0 && !CanTryAddressFamily(dnsEndPoint.AddressFamily))
2858 {
2859 throw new NotSupportedException(System.SR.net_invalidversion);
2860 }
2861 e.StartOperationCommon(this, SocketAsyncOperation.Connect);
2862 e.StartOperationConnect(saeaCancelable, userSocket);
2863 try
2864 {
2865 return e.DnsConnectAsync(dnsEndPoint, (SocketType)0, ProtocolType.IP);
2866 }
2867 catch
2868 {
2869 e.Complete();
2870 throw;
2871 }
2872 }
2873 if (!CanTryAddressFamily(e.RemoteEndPoint.AddressFamily))
2874 {
2875 throw new NotSupportedException(System.SR.net_invalidversion);
2876 }
2877 e._socketAddress = Serialize(ref remoteEP);
2881 if (SocketsTelemetry.Log.IsEnabled())
2882 {
2883 SocketsTelemetry.Log.ConnectStart(e._socketAddress);
2884 }
2885 e.StartOperationCommon(this, SocketAsyncOperation.Connect);
2886 e.StartOperationConnect(saeaMultiConnectCancelable: false, userSocket);
2887 try
2888 {
2889 SocketError socketError = ((_socketType == SocketType.Stream && remoteEP.AddressFamily != AddressFamily.Unix) ? e.DoOperationConnectEx(this, _handle) : e.DoOperationConnect(this, _handle));
2890 return socketError == SocketError.IOPending;
2891 }
2892 catch (Exception ex)
2893 {
2894 if (SocketsTelemetry.Log.IsEnabled())
2895 {
2896 SocketsTelemetry.Log.AfterConnect(SocketError.NotSocket, ex.Message);
2897 }
2898 _localEndPoint = null;
2899 e.Complete();
2900 throw;
2901 }
2902 }
static void ConnectedAsyncDns(Socket socket)
static readonly System.Net.NetEventSource Log
System.Net.Internals.SocketAddress Serialize(ref EndPoint remoteEP)
Definition Socket.cs:3225
SafeSocketHandle _handle
Definition Socket.cs:533
void WildcardBindForConnectIfNecessary(AddressFamily addressFamily)
Definition Socket.cs:2938
EndPoint _pendingConnectRightEndPoint
Definition Socket.cs:553
bool CanTryAddressFamily(AddressFamily family)
Definition Socket.cs:1159
static string net_invalidversion
Definition SR.cs:16
static string net_multibuffernotsupported
Definition SR.cs:88
static string net_sockets_mustnotlisten
Definition SR.cs:64
Definition SR.cs:7

References System.Net.Sockets.Socket._handle, System.Net.Sockets.Socket._isConnected, System.Net.Sockets.Socket._isListening, System.Net.Sockets.Socket._localEndPoint, System.Net.Sockets.Socket._nonBlockingConnectInProgress, System.Net.Sockets.Socket._pendingConnectRightEndPoint, System.Net.Sockets.SocketAsyncEventArgs._socketAddress, System.Net.Sockets.Socket._socketType, System.Net.EndPoint.AddressFamily, System.Net.Sockets.Socket.CanTryAddressFamily(), System.Net.Sockets.SocketAsyncEventArgs.Complete(), System.Net.NetEventSource.ConnectedAsyncDns(), System.Net.Sockets.SocketAsyncEventArgs.DnsConnectAsync(), System.Net.Sockets.SocketAsyncEventArgs.DoOperationConnect(), System.Net.Sockets.SocketAsyncEventArgs.DoOperationConnectEx(), System.Net.Sockets.SocketAsyncEventArgs.HasMultipleBuffers, System.Net.NetEventSource.Log, System.Net.Sockets.SocketsTelemetry.Log, System.SR.net_invalidversion, System.SR.net_multibuffernotsupported, System.SR.net_sockets_mustnotlisten, System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint, System.Net.Sockets.Socket.Serialize(), System.Net.Sockets.SocketAsyncEventArgs.StartOperationCommon(), System.Net.Sockets.SocketAsyncEventArgs.StartOperationConnect(), System.Net.Sockets.Socket.ThrowIfDisposed(), and System.Net.Sockets.Socket.WildcardBindForConnectIfNecessary().