public static RubyArray/*!*/ ReceiveFrom(ConversionStorage<int>/*!*/ conversionStorage, IPSocket/*!*/ self,
int length, [DefaultParameterValue(null)]object/*Numeric*/ flags) {
SocketFlags sFlags = ConvertToSocketFlag(conversionStorage, flags);
byte[] buffer = new byte[length];
EndPoint fromEP = new IPEndPoint(IPAddress.Any, 0);
int received = self.Socket.ReceiveFrom(buffer, sFlags, ref fromEP);
MutableString str = MutableString.CreateBinary();
str.Append(buffer, 0, received);
str.IsTainted = true;
return RubyOps.MakeArray2(str, self.GetAddressArray(fromEP));
}
#endregion