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

◆ Socket() [5/5]

unsafe System.Net.Sockets.Socket.Socket ( SocketInformation socketInformation)
inline

Definition at line 4368 of file Socket.cs.

4369 {
4370 SocketError socketError = SocketPal.CreateSocket(socketInformation, out _handle, ref _addressFamily, ref _socketType, ref _protocolType);
4371 if (socketError != 0)
4372 {
4373 _handle = null;
4374 if (socketError == SocketError.InvalidArgument)
4375 {
4376 throw new ArgumentException(System.SR.net_sockets_invalid_socketinformation, "socketInformation");
4377 }
4378 throw new SocketException((int)socketError);
4379 }
4380 if (_addressFamily != AddressFamily.InterNetwork && _addressFamily != AddressFamily.InterNetworkV6)
4381 {
4382 _handle.Dispose();
4383 _handle = null;
4384 throw new NotSupportedException(System.SR.net_invalidversion);
4385 }
4387 _willBlock = !socketInformation.GetOption(SocketInformationOptions.NonBlocking);
4390 IPEndPoint iPEndPoint = new IPEndPoint((_addressFamily == AddressFamily.InterNetwork) ? IPAddress.Any : IPAddress.IPv6Any, 0);
4391 System.Net.Internals.SocketAddress socketAddress = IPEndPointExtensions.Serialize(iPEndPoint);
4392 fixed (byte* buffer = socketAddress.Buffer)
4393 {
4394 fixed (int* nameLen = &socketAddress.InternalSize)
4395 {
4396 socketError = SocketPal.GetSockName(_handle, buffer, nameLen);
4397 }
4398 }
4399 switch (socketError)
4400 {
4401 case SocketError.Success:
4402 _rightEndPoint = iPEndPoint.Create(socketAddress);
4403 break;
4404 default:
4405 _handle.Dispose();
4406 _handle = null;
4407 throw new SocketException((int)socketError);
4408 case SocketError.InvalidArgument:
4409 break;
4410 }
4411 }
SocketError InternalSetBlocking(bool desired, out bool current)
Definition Socket.cs:3592
SafeSocketHandle _handle
Definition Socket.cs:533
AddressFamily _addressFamily
Definition Socket.cs:555
ProtocolType _protocolType
Definition Socket.cs:559
static string net_invalidversion
Definition SR.cs:16
static string net_sockets_invalid_socketinformation
Definition SR.cs:114
Definition SR.cs:7

References System.Net.Sockets.Socket._addressFamily, System.Net.Sockets.Socket._handle, System.Net.Sockets.Socket._isConnected, System.Net.Sockets.Socket._isListening, System.Net.Sockets.Socket._protocolType, System.Net.Sockets.Socket._rightEndPoint, System.Net.Sockets.Socket._socketType, System.Net.Sockets.Socket._willBlock, System.Net.IPAddress.Any, System.buffer, System.Net.Sockets.SocketPal.CreateSocket(), System.Runtime.InteropServices.SafeHandle.Dispose(), System.Net.Sockets.SocketPal.GetSockName(), System.Net.Sockets.Socket.InternalSetBlocking(), System.Net.IPAddress.IPv6Any, System.SR.net_invalidversion, System.SR.net_sockets_invalid_socketinformation, and System.Net.Sockets.IPEndPointExtensions.Serialize().