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

◆ ReceiveFrom() [1/6]

int System.Net.Sockets.Socket.ReceiveFrom ( byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
ref EndPoint remoteEP )
inline

Definition at line 1983 of file Socket.cs.

1984 {
1988 SocketPal.CheckDualModeReceiveSupport(this);
1990 if (System.Net.NetEventSource.Log.IsEnabled())
1991 {
1992 System.Net.NetEventSource.Info(this, $"SRC{LocalEndPoint} size:{size} remoteEP:{remoteEP}", "ReceiveFrom");
1993 }
1994 EndPoint remoteEP2 = remoteEP;
1996 System.Net.Internals.SocketAddress socketAddress2 = IPEndPointExtensions.Serialize(remoteEP2);
1997 int bytesTransferred;
1998 SocketError socketError = SocketPal.ReceiveFrom(_handle, buffer, offset, size, socketFlags, socketAddress.Buffer, ref socketAddress.InternalSize, out bytesTransferred);
2000 SocketException ex = null;
2001 if (socketError != 0)
2002 {
2003 ex = new SocketException((int)socketError);
2005 if (System.Net.NetEventSource.Log.IsEnabled())
2006 {
2007 System.Net.NetEventSource.Error(this, ex, "ReceiveFrom");
2008 }
2009 if (ex.SocketErrorCode != SocketError.MessageSize)
2010 {
2011 throw ex;
2012 }
2013 }
2014 else if (SocketsTelemetry.Log.IsEnabled())
2015 {
2016 SocketsTelemetry.Log.BytesReceived(bytesTransferred);
2017 if (SocketType == SocketType.Dgram)
2018 {
2019 SocketsTelemetry.Log.DatagramReceived();
2020 }
2021 }
2022 if (!socketAddress2.Equals(socketAddress))
2023 {
2024 try
2025 {
2026 remoteEP = remoteEP2.Create(socketAddress);
2027 }
2028 catch
2029 {
2030 }
2031 if (_rightEndPoint == null)
2032 {
2034 }
2035 }
2036 if (ex != null)
2037 {
2038 throw ex;
2039 }
2040 if (System.Net.NetEventSource.Log.IsEnabled())
2041 {
2042 System.Net.NetEventSource.DumpBuffer(this, buffer, offset, size, "ReceiveFrom");
2043 }
2044 return bytesTransferred;
2045 }
static readonly System.Net.NetEventSource Log
static void Info(object thisOrContextObject, FormattableString formattableString=null, [CallerMemberName] string memberName=null)
static void Error(object thisOrContextObject, FormattableString formattableString, [CallerMemberName] string memberName=null)
static void DumpBuffer(object thisOrContextObject, byte[] buffer, int offset, int count, [CallerMemberName] string memberName=null)
System.Net.Internals.SocketAddress Serialize(ref EndPoint remoteEP)
Definition Socket.cs:3225
void ValidateReceiveFromEndpointAndState(EndPoint remoteEndPoint, string remoteEndPointArgumentName)
Definition Socket.cs:3757
void UpdateReceiveSocketErrorForDisposed(ref SocketError socketError, int bytesTransferred)
Definition Socket.cs:3790
static void ValidateBufferArguments(byte[] buffer, int offset, int size)
Definition Socket.cs:4250
SafeSocketHandle _handle
Definition Socket.cs:533
void UpdateStatusAfterSocketError(SocketException socketException)
Definition Socket.cs:3726

References System.Net.Sockets.Socket._handle, System.Net.Sockets.Socket._rightEndPoint, System.Net.Internals.SocketAddress.Buffer, System.buffer, System.Net.Sockets.SocketPal.CheckDualModeReceiveSupport(), System.Net.NetEventSource.DumpBuffer(), System.Net.NetEventSource.Error(), System.Net.NetEventSource.Info(), System.Net.Internals.SocketAddress.InternalSize, System.Net.NetEventSource.Log, System.Net.Sockets.SocketsTelemetry.Log, System.offset, System.Net.Sockets.SocketPal.ReceiveFrom(), System.Net.Sockets.IPEndPointExtensions.Serialize(), System.Net.Sockets.Socket.Serialize(), System.Net.Sockets.Socket.ThrowIfDisposed(), System.Net.Sockets.Socket.UpdateReceiveSocketErrorForDisposed(), System.Net.Sockets.Socket.UpdateStatusAfterSocketError(), System.Net.Sockets.Socket.ValidateBlockingMode(), System.Net.Sockets.Socket.ValidateBufferArguments(), and System.Net.Sockets.Socket.ValidateReceiveFromEndpointAndState().